自己文書化されたコードは読みやすく、維持しやすい
最小の驚きの原則とドキュメントとしてのコードの原則に従ってください:1つの目標に1つの変数を使用し、その使用を理解しやすくし、コードを説明なしで読みやすくします。
正しく構造化されたコードは(再)使用が簡単(したがって安価)です
また、ここでは、query
実行前にステートメントを準備するために常に使用されるように見えます。これはおそらく、このコードの一部を1つ(または複数)のヘルパーメソッドにリファクタリングして、クエリを準備および実行する(DRYの原則に準拠する)ことを示す兆候です。
このようにして、効果的に:
- ヘルパーメソッドで変数を1つだけ使用して、現在のコンテキストのクエリを識別します。
- クエリを再実行するたびに入力するコードを少なくする必要があります。
- コードを他の人にとって読みやすくします。
例:
リファクタリングされたバージョンの方が明らかに優れている例から取って、これを考慮してください。もちろん、あなたのスニペットはこの質問の目的のための単なる例にすぎませんが、その概念は依然として真実であり、スケールがあります。
あなたの例1:
Strings querycre,queryins,queryup,querydel;
querycre = 'Create table XYZ ...';
execute querycre ;
queryins = 'Insert into XYZ ...';
execute queryins ;
queryup = 'Update XYZ set ...';
execute queryup;
querydel = 'Delete from XYZ ...';
execute querydel ;
あなたの例2:
Strings query;
query= 'Create table XYZ ...';
execute query ;
query= 'Insert into XYZ ...';
execute query ;
query= 'Update XYZ set ...';
execute query ;
query= 'Delete from XYZ ...';
execute query ;
例3(リファクタリングされた擬似コード):
def executeQuery(query, parameters...)
statement = prepareStatement(query, parameters);
execute statement;
end
// call point:
executeQuery('Create table XYZ ... ');
executeQuery('Insert into XYZ ...');
executeQuery('Update XYZ set ...');
executeQuery('Delete from XYZ ...');
利点は、定期的な再利用にあります。
個人的な逸話
私はもともと、限られた画面の不動産を扱うCプログラマーとして始めたので、変数を再利用することは、コンパイルされたコード(当時)とより多くのコードを一度に読めるようにするために意味がありました。
しかし、その後、高レベルの言語に移行し、関数型プログラミングに磨きをかけ、副作用を制限するために可能な限り不変の変数と不変の参照を使用する習慣を取りました。
私にとっては何ですか?
関数の入力をすべて不変にし、新しい結果を返すという習慣をとる場合(真の数学関数がそうするように)、ストアを複製しないという習慣になります。
拡張により、これは以下につながります。
- 短い関数を書いて、
- 明確に定義された目的で、
- 理解しやすい
- 再利用するには、
- 拡張する(OO継承または機能連鎖による)
- および文書化(すでに自己文書化)。
ここで可変状態にメリットがないと言っているのではなく、習慣があなたにどのように成長し、コードの可読性にどのように影響するかを指摘しています。