[コードレビュー]NEXT STEPコードレビュー2~4週間
中に入る.
これは2~4週間のタスク文字列計算機とコメントで、評論家から得られたフィードバックをまとめ、重複エラーを避けるために文章を整理しました.
🍊 1、2回のフィードバックの完全な履歴
最初のGITフルリクエスト履歴は、完全なプライマリフィードバック履歴を提供する.
🍎 定数とメソッドを正しく使用するアクセス制限
方法や定数が公開される問題はよく発生する.
外部で使用する必要がない方法でなければ、privateを使用してアクセスできないようにする必要があります.
特に、privateを使用してテストコードを記述するケースがいくつかあります.
この場合,これが分離階級(責任)のシグナルであるかどうかを考えてみる.
🍒 参照タイプvs元のタイプ
戻りタイプまたはリストタイプ宣言で参照タイプを使用する場合に発生します.
この部分はreferenceと元のタイプが分からないため発生します.
金英漢氏は、図面を設計する際に参考タイプを使うと話した.
これは,参照タイプの特徴にnull値が存在する可能性があることを考慮して設計された.
現在のタスクでは、null値を生成する理由がないためprimitiveタイプを使用するのが正しいです.
詳細については、referencevs元の比較を参照してください.
🥝 防御放射線を使う
作成者パラメータとして受信した外部パラメータオブジェクトをオブジェクトフィールドに直接割り当てます.
外部パラメータが変更されると、オブジェクトのフィールド値も同様に変更されます.
この問題を解決するには、レプリケーションの深さまたは防御が必要です.
詳細については、マイブログ[浅い放射線/深い放射線]防御性放射線を参照してください.
🍑 静的importはいつ使用しますか?
import文を使用してクラスのパッケージ名を省略できるように、static import文を使用してstaticメンバーを呼び出すときにクラス名を省略できます.
つまり、Outputクラスは省略できますが、以下のようになります.
一般にUtilクラスやviewパッケージに用いられるが,使用してもクラス名は省略せず,使用などを考慮して直感性を保つ.
🍓 キャッシュを使用して不要なオブジェクトを作成しない
私のコードでは正規表現を使用します.
Pattern.matchesを呼び出し、patternオブジェクトのmatches機能の内部に正規表現食用patternインスタンスを生成します.一度だけ使用し、破棄コードがあります.
Patternは、インスタンスの作成にコストがかかる高価なオブジェクトであり、パフォーマンスが低下します.
この場合、Patternをキャッシュして再使用することでパフォーマンスを向上させることができます.
🍋 設計モードの使用
MVCモード分離モデルとコントローラビューを用いたフィードバックを受け取った.
ポリシー・モードを使用してコードの重複を減らすというフィードバックを受けました
各モードを試してみましたが、詳細はブログMVCまとめ、ポリシー・モードの整理を参照してください.
🍈 オブジェクトにメッセージを送信します.
オブジェクトの値を取り出して変更することがよくあります.
ex) Aaa.getName()後のパラメータですか、それとも比較しますか.
この方式は再構築の対象となる(クリア不可)
この場合、解決のためにオブジェクトにメッセージを送信する
次に、オブジェクトの名前を抽出して比較するのではなく、メッセージを送信して結果を返す方法を示します.
ex) Aaa.compareName(String Name)
🍐 クラス分離を行う
🥥 一級コレクションの使用
これは2~4週間のタスク文字列計算機とコメントで、評論家から得られたフィードバックをまとめ、重複エラーを避けるために文章を整理しました.
🍊 1、2回のフィードバックの完全な履歴
最初のGITフルリクエスト履歴は、完全なプライマリフィードバック履歴を提供する.
🍎 定数とメソッドを正しく使用するアクセス制限
方法や定数が公開される問題はよく発生する.
外部で使用する必要がない方法でなければ、privateを使用してアクセスできないようにする必要があります.
特に、privateを使用してテストコードを記述するケースがいくつかあります.
この場合,これが分離階級(責任)のシグナルであるかどうかを考えてみる.
戻りタイプまたはリストタイプ宣言で参照タイプを使用する場合に発生します.
この部分はreferenceと元のタイプが分からないため発生します.
金英漢氏は、図面を設計する際に参考タイプを使うと話した.
これは,参照タイプの特徴にnull値が存在する可能性があることを考慮して設計された.
現在のタスクでは、null値を生成する理由がないためprimitiveタイプを使用するのが正しいです.
詳細については、referencevs元の比較を参照してください.
🥝 防御放射線を使う
作成者パラメータとして受信した外部パラメータオブジェクトをオブジェクトフィールドに直接割り当てます.
外部パラメータが変更されると、オブジェクトのフィールド値も同様に変更されます.
この問題を解決するには、レプリケーションの深さまたは防御が必要です.
詳細については、マイブログ[浅い放射線/深い放射線]防御性放射線を参照してください.
🍑 静的importはいつ使用しますか?
import文を使用してクラスのパッケージ名を省略できるように、static import文を使用してstaticメンバーを呼び出すときにクラス名を省略できます.
つまり、Outputクラスは省略できますが、以下のようになります.
Output.printSomeThing
//클래스명 생략
printSomeThing
しかし、コードが簡潔になり、特定のクラスの静的メンバーを頻繁に使用する場合に便利になることに注意してください.しかし、乱用すると毒薬になる可能性があります.一般にUtilクラスやviewパッケージに用いられるが,使用してもクラス名は省略せず,使用などを考慮して直感性を保つ.
🍓 キャッシュを使用して不要なオブジェクトを作成しない
私のコードでは正規表現を使用します.
Pattern.matchesを呼び出し、patternオブジェクトのmatches機能の内部に正規表現食用patternインスタンスを生成します.一度だけ使用し、破棄コードがあります.
Patternは、インスタンスの作成にコストがかかる高価なオブジェクトであり、パフォーマンスが低下します.
この場合、Patternをキャッシュして再使用することでパフォーマンスを向上させることができます.
🍋 設計モードの使用
MVCモード分離モデルとコントローラビューを用いたフィードバックを受け取った.
ポリシー・モードを使用してコードの重複を減らすというフィードバックを受けました
各モードを試してみましたが、詳細はブログMVCまとめ、ポリシー・モードの整理を参照してください.
🍈 オブジェクトにメッセージを送信します.
オブジェクトの値を取り出して変更することがよくあります.
ex) Aaa.getName()後のパラメータですか、それとも比較しますか.
この方式は再構築の対象となる(クリア不可)
この場合、解決のためにオブジェクトにメッセージを送信する
次に、オブジェクトの名前を抽出して比較するのではなく、メッセージを送信して結果を返す方法を示します.
ex) Aaa.compareName(String Name)
🍐 クラス分離を行う
🥥 一級コレクションの使用
Reference
この問題について([コードレビュー]NEXT STEPコードレビュー2~4週間), 我々は、より多くの情報をここで見つけました https://velog.io/@miot2j/Code-Review-NEXTSTEP-코드-리뷰-24주차-정리-및-회고テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol