コードコアのクリア(8章境界)


警戒柵


  • オープンソースで、ライブラリを使わない項目はありません.
  • 私たちが作成したコードに外来コードをマージする必要があります.
  • 外部コードは外部から生成されたコードであり、外部システムから呼び出されてもよいし、外部から生成されたコードのみであってもよい.
  • 私たちのコードと外部コードをきちんと統合するためには、境界を作る必要があります.
  • 境界を確立する(1)私たちのコードを保護する


    パッヶージ


    外部からオブジェクトを非表示にする実装。



    Sensorを管理する必要があります。センサーは外部で使用します。

  • Sensor IdとSensorオブジェクトは、Mapを使用します.
  • ただしそのままMapを使用するとMapが持つclear()が露出する.
  • Sensorの「外部」コード観点はSensorオブジェクトの値のみを取得したい.
  • 캡슐화
  • センサーを管理したいセンサーは外部で使用します。

    Map<Sensor> sensors = new HashMap<Sensor>();
    Sensor s = sensors.get(sensorId);
  • Mapインタフェースが提供するclearなど不要な機能が露呈する.
  • 外部コードを勝手に呼び出すと、意図に関係なくセンサデータが破損する可能性があります.
  • public class Sensors {
    	private Map<Sensor> sensors = new HashMap<Sensor>();
    
    	public Sensor getById(String sensorId) {
    		return sensors.get(sensorId);
    	}
    }
  • カプセル化によりMapを隠す.
  • 欲しい機能しか公開できない.
  • 適切な境界で私たちのコードを保護します.
  • 境界の作成(2)外部コードとの互換性



    外部コードを呼び出すときに私たちが望むように使いたいです!

    💡 Adapter Pattern
    クラスのインタフェースをクライアントで使用するインタフェースに変換します.
    アダプタにより、インタフェースの互換性の問題で一緒に使用できないクラスを接続して使用できます.

    外部ライブラリのテスト-ラーニングテスト


    学習テストを作成してライブラリをテストします。

  • 🤔彼らはもうライブラリをテストしたでしょう.
  • でも庫사용テストしてるの?

  • 外部コードを勉強して、安定性を事前に検証することもできます!

  • 学習テストで理解度を高める.
  • 外部コードバージョン変更の場合、
    コードと互換性があるかどうかを確認できます.
  • リファレンス


    同報告書は、ゼロベースラインクリーニングコード毎月1冊の授業後のまとめである.