トリプルコード関数
タスクから整理した内容をブログに移動したので、タスクから見ると便利です。🤗
移動→Junkk's Notion
関数を読みやすく理解する方法.意図を明確に表現する関数を実現する方法.1つのプロパティで、初めて読む人がプログラムの内部を直感的に理解できるようにします.
小さくしろ!
関数は小さいほど良いです.
ブロックとインデント
if文/else文/hile文などのブロックは1行でなければなりません.
→外部を囲む関数(encluded function)が小さくなり、ブロックに呼び出した関数を適切に命名すれば、コードがより理解しやすくなる.
一つだけやろう!
関数は一つのことをしなければなりません.そのことをうまくやらなければならない.それしかできない.
指定した関数名の下で抽象レベルが1のステップのみを実行する場合、その関数は1つの操作のみを実行します.
単純な他の表現ではなく意味のある名前で他の関数を抽出できる場合、この関数は複数の操作を実行します.
関数の一部
1つの仕事をする関数だけでは自然に部分的に分けるのは難しい.
各関数の抽象レベルは1つです!
関数に1つの操作しかないことを確認するには、関数内のすべての文の抽象レベルが同じである必要があります.
1つの関数に抽象レベルをブレンドすると、コードを読む人が混同されます.
♦特定の表現が根本的な概念なのか細部なのかを区別するのが難しい
コードを上から下へ読み込む:降格規則
コードは上から下まで物語のように読むべきだ.
→降下ルール:上から下へプログラムを読み,関数抽象化の程度を一度に1レベル下げる.
スイッチドア
→switchゲートを抽象工場に隠す.
例)Employee and Factory(p 48-49)
ファクトリはswitc文を使用して適切なemployee派生クラスインスタンスを作成します.
CalculatePay、isPayday、DeliverPayなどの関数は、Employeeインタフェースに接続して呼び出されます.
◇多形性のため、実際の派生クラスの関数実行
叙述的な名前を使う!
長くて叙述的な名前は短くて難しい名前よりいいです.
関数に名前を付けるときは、複数の単語が読みやすい名前付け方法を使用し、複数の単語を使用して機能をよりよく表現できる名前を選択します.
一貫性を持たなければならない.
→モジュール内の関数名は同じ文、名詞、動詞を使う
関数パラメータ
関数における理想的な引数=0個(無項)(1個(単項)→2個(二項)→3個(三項)→4個以上(複数)
一般的な単一フォーマット
なぜ関数に引数を渡すのか
イベント(少ないが役に立つ単一関数フォーマット)
→入力パラメータのみ
そうでない場合は、関数の使用は避けてください.
フラグパラメータ
フラグパラメータXの使用
にこうかんすう
Point p=new Point(0,0)などを除き、なるべく避けます.
さんこうかんすう
一般的には、X→パラメータを使う順番を人為的に覚えなければなりません.
引数オブジェクト
オブジェクトを作成することでパラメータを減らします.
引数リスト
パラメータ可変が必要な関数
ex) String.Fomat
実はこの関数です!public String format(String format, Object... args)
動詞とキーワード
関数の意図やパラメータの順序や意図を正しく表現するには、良い関数名が必要です.
単項関数-関数とパラメータは動詞/名詞対exのwriteField(name)
関数名にキーワードを追加します.すなわち、関数名に引数名を入れる
ex) assertExpectedEqualsActual(expected, actual)
付随効果は発生しないでください。
負の効果→時間の欠陥、順序の従属関係を招きます
パワーファクタ
我々は通常,引数を関数入力として解釈する.
一般的に出力パラメータを避けること.関数でステータスを変更する必要がある場合は、関数が属するオブジェクトのステータスを変更する方法を選択する必要があります.
コマンドとクエリーを分けて!
関数は、特定のアクションを実行するか(=オブジェクトのステータスを変更する)、または特定のアクションに応答するか(=オブジェクト情報を返します).二者択一!
エラーコードではなく例外を使用します。
コマンド関数がエラーコードを返す方法は、コマンド/クエリー分離規則に違反します.
◆エラーコードではなく例外を使用すると、エラー処理コードが元のコードから分離され、コードがきれいになります.
Try/Catchブロックの取り出し
try/catchブロックはコード構造を混乱させるため、個別の関数として抽出する必要があります.
→正常動作とエラー処理動作を分けると、コードの理解と修正が容易になります.
エラー処理も仕事です
エラーを処理する関数はエラーのみを処理します
Error.JAva依存磁石
エラーコードを返す=どこかでエラーコードを定義
public enum Error {
OK,
INVAILD,
NO_SUCH,
LOCKED,
OUT_OF_RESOURCES,
WAITING_FOR_EVENT;
}
오류 코드 대신 예외 사용 → 재컴파일/재배치 없이도 새 예외 클래스 추가 가능
繰り返さないで!
重複除外の努力
ex)リレーショナル・データベースに通常型を作成し、データの重複を排除する
ex)オブジェクト向けプログラミングはコードを親と見なし,繰り返す必要はない.
ex)構造化プログラミング、AOP、COP等
構造化プログラミング
関数はどう書きますか。
n/a.結論
→第四章注記
Reference
この問題について(トリプルコード関数), 我々は、より多くの情報をここで見つけました https://velog.io/@junnkk/3장-함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol