シリーズ記事ディレクトリ
序文
記述されたコードを標準化し、コードの保守性を向上させるために遵守する必要がある 7 つの原則。
1. 単一の責任
コードでは、すべてのクラス、オブジェクト、およびインターフェースは 1 つの責任 (関数) しか持つことができないため、クラス (オブジェクト、インターフェース) を変更する動機が低下します。特に、テスト後にコードを移動しないことをお勧めします。そうしないと、バグは自己責任になります。
第二に、開閉の原則
元のコードは拡張のみ可能で、変更はできません。それでも同じ文、特にテストされたコードは動かさないのが一番です。そうしないとバグがうぬぼれます。
3. インターフェース分離
どのインターフェースも、単一の責任を補足するメソッドを 1 つだけ持つことができます。
4.リヒター代用
派生クラスは、基本クラスの元の機能を拡張することしかできず、変更することはできません。開閉原理の補足です。
5. デメテルの法則
たとえば、クラス A とクラス B があります。互いの詳細が少ないほど良い (カップリングは低くなければなりません)
6.依存関係の逆転
たとえば、Course クラスと Student クラスがあり、ここでは Student が Course クラスを呼び出す可能性をシミュレートします。
class Course{
//学习java课程
public void javaCourse(){
//todo
}
//学习c sharp课程
public void csharpCourse(){
//todo
}
}
Student クラスを呼び出すには、このように記述する必要があります。
class Student{
//学习
public void study(){
Course course = new Course ();
course.javaCourse();
course.csharpCourse();
}
}
これは新しい Js を追加するための教科書であり、Student クラスと Course クラスを同時に変更するのは非常に面倒であることがわかります。このとき、ICourse インターフェースを参照して、毎回 ICourse インターフェースを介して Student クラスにコース学習を呼び出させることができます。新しいクラスが追加された場合は、元のクラスを変更する必要があります。次のように書かれています。
interface ICourse{
void learnCourse();
}
class JavaCourse : ICourse{
void learnCourse(){
//todo
}
}
class CSharpCourse : ICourse{
void learnCourse(){
//todo
}
}
class Student{
//学习
public void study(){
//想写java就new java,代码扩展性和阅读性都提高了,还有就可恨的耦合性
ICourse javaCourse = new JavaCourse ();
javaCourse。learnCourse();
}
}
7. 合成と多重化
コードを設計するときは、組み合わせ関係が使える場合は、継承関係ではなく組み合わせ関係を使用するようにしてください。