私はいくつかのOOPの本を読んでいます。ここでは、責任の集合に焦点を当てたクラスを定義するためのルールに重点が置かれています。私が働いた多くのアプリケーションでは、これが守られていることがほとんどです。しかし、多くのロジックが1つの方法に投げ込まれて、理解/単体テストを理解することが困難になっているケースがたくさんあります。方法を定義する際に従うべきベストプラクティスは何ですか?メソッドの責任に焦点を合わせた
答えて
例としての、以下の方法を見てみましょう:
public static void printDetails() {
System.out.println("Current time: " + LocalTime.now());
System.out.println("Current date: " + LocalDate.now());
System.out.println("Available processors: " + Runtime.getRuntime().availableProcessors());
System.out.println("Max memory: " + Runtime.getRuntime().maxMemory());
System.out.println("Free memory: " + Runtime.getRuntime().freeMemory());
}
いくつかのリファクタリング後、私たちは、より読みやすくかつ保守バージョンがあります:
public static void printDetails() {
printDateTimeDetails();
printProcessorDetails();
printMemoryDetails();
}
を読みやすくなります。さらに重要なのは、テストする方が簡単です。 このメソッドの本文を読むと、そのメソッドの目的が明確に理解されます。詳細が必要な場合は、コードを深く見て、すべてのメソッドが何をしているかを見てください。
public static void printProcessorDetails() {
System.out.println("Available processors: " + getAvailableProcessors());
}
public static int getAvailableProcessors() {
return Runtime.getRuntime().availableProcessors();
}
public static void printMemoryDetails() {
System.out.println("Max memory: " + getMaxMemory());
System.out.println("Free memory: " + getFreeMemory());
}
public static long getFreeMemory() {
return Runtime.getRuntime().freeMemory();
}
public static long getMaxMemory() {
return Runtime.getRuntime().maxMemory();
}
private static void printDateTimeDetails() {
System.out.println("Current time: " + LocalTime.now());
System.out.println("Current date: " + LocalDate.now());
}
また、このようなコードは再利用可能です。
ボーイスカウトには、「キャンプ場を常に見つけたものよりも清潔にしておいてください」というルールがあります。実際には、スカウトの父であるロバート・スティーブンソン・スミス・バーデン・パウエルが書いたそのルールの原型は、「あなたが見つけたよりもこの世界を少しでも試してみてください」でした。
もちろんこれはすべて私の意見です。
ありがとう@Andrii –
一般的なコンセンサスは、方法が何をすべきかを決める最良の方法は、Do One Thingの哲学に従うことです。
それぞれの方法は、1つのことと1つのことのみを行う必要があります。
ありがとうございます、リンクを見てください! –
- 1. TextBoxに焦点を合わせる
- 2. タブに焦点を合わせる
- 3. UITextFieldに焦点を合わせて
- 4. Zendフォームを使用したTextareaに焦点を合わせる
- 5. $ windowで開いたウィンドウに焦点を合わせる
- 6. ウィンドウの焦点合わせのためのWin32API
- 7. プライム面タブビューの特定のタブに焦点を合わせる
- 8. 提出後のフォームフィールドに焦点を合わせる
- 9. 変数付きのフォームフィールドに焦点を合わせる
- 10. Asp入力ジャンプのバグに焦点を合わせる
- 11. UIWebView特定の四角形に焦点を合わせる
- 12. モーダルオープン時の入力フィールドに焦点を合わせる
- 13. スピナー - 最初の項目に焦点を合わせる
- 14. 作成後の入力に焦点を合わせる
- 15. リンク内のコンテンツに焦点を合わせる
- 16. Vis.js現在の時間(赤線)に焦点を合わせる
- 17. Uwpナビゲーションの例とコントロールに焦点を合わせる
- 18. 使用後にedittextに焦点を合わせる
- 19. Javascriptでタッチマッピングとモバイルに焦点を合わせる
- 20. 入力フィールドに焦点を合わせます
- 21. タンクに焦点を合わせる(CSS、JS)
- 22. リストビュー内の間違った編集テキストに焦点を合わせる
- 23. jQuery UIアコーディオンの開かれたアイテムに焦点を合わせる
- 24. 角度JS - ダイナミックに作成されたテキストボックスに焦点を合わせる
- 25. ajaxによって作成されたテキストボックスに焦点を合わせます
- 26. 何をコピーするかを知るために焦点を合わせる
- 27. Emberコンポーネントを使用した要素に焦点を合わせる
- 28. リンクを介して特定の部分に焦点を合わせる
- 29. ReactJSのみを使用してカスタムモーダルに焦点を合わせる
- 30. "alt"キープレスの最初のjmenubar項目に焦点を合わせる
「Clean Code、author - Robert Martin」を読んだ後、私はコードを完全に見直しました。それを読むことは簡単で速いです。リファクタリング、コードのクリーン化、構造体の整理方法、繰り返しのない方法を重視しています。 –
ありがとう@AndriiAbramov –
単独責任原則としても知られているSOLIDのS:クラスには変更の理由が1つだけある必要があります(Robert C. Martin)。 – sp00m