calculateIBANAndBICAndSaveRecordChainIfChanged
悪い関数名と見なされ、1 つの関数で 1 つのことを行うという規則に違反します。
複雑さを軽減
ルーチンを作成する唯一の最も重要な理由は、プログラムの複雑さを軽減することです。考える必要がないように、情報を非表示にするルーチンを作成します。確かに、ルーチンを作成するときにそれについて考える必要があります。しかし、それが書かれた後は、詳細を忘れて、内部の仕組みを知らなくてもルーチンを使用できるようになるはずです。ルーチンを作成するその他の理由 (コード サイズの最小化、保守性の向上、正確性の向上) も十分な理由ですが、ルーチンの抽象化の力がなければ、複雑なプログラムを知的に管理することは不可能です。この関数を以下の関数に単純に分割できます。
CalculateIBAN
CalculateBIC
SaveRecordChain
IsRecordChainChanged
プロシージャに名前を付けるには、強力な動詞の後に目的語を使用します
機能的凝集度を持つプロシージャは、通常、オブジェクトに対して操作を実行します。名前はプロシージャの動作を反映する必要があり、オブジェクトに対する操作は動詞とオブジェクトの名前を意味します。PrintDocument()、CalcMonthlyRevenues()、CheckOrderInfo()、および RepaginateDocument() は、適切なプロシージャ名のサンプルです。
ルーチンが行うすべてのことを説明する
ルーチンの名前で、すべての出力と副作用を説明します。ルーチンがレポートの合計を計算し、出力ファイルを開く場合、ComputeReportTotals() はルーチンの適切な名前ではありません。ComputeReportTotalsAndOpen-OutputFile() は適切な名前ですが、長すぎてばかげています。副作用のあるルーチンがある場合、長くてばかげた名前がたくさんあります。治療法は、あまり説明的でないルーチン名を使用しないことです。治療法は、副作用を伴うのではなく直接的に物事が起こるようにプログラムすることです。
意味のない動詞、あいまいな動詞、気まぐれな動詞は避ける
いくつかの動詞は弾力性があり、ほぼすべての意味をカバーするために引き伸ばされます。HandleCalculation()、PerformServices()、OutputUser()、ProcessInput()、DealWithOutput() などのルーチン名では、ルーチンが何をするかわかりません。せいぜい、これらの名前は、ルーチンが計算、サービス、ユーザー、入力、および出力と関係があることを示しています。例外は、イベントを処理するという特定の技術的な意味で動詞「ハンドル」が使用された場合です。
上記のポイントのほとんどは、Code complete IIから参照されています。他の良い本はClean Code
、ロバート C. マーティンThe Clean Coder
からです。