GUIコードについて覚えておくべきことは、イベント駆動型であり、イベント駆動型コードは常にランダムに編成された大量のイベントハンドラーのように見えるということです。本当に厄介なのは、イベント駆動型でないコードをクラスに追加しようとするときです。確かに、イベントハンドラーをサポートするように見え、イベントハンドラーを小さく小さく保つことができますが、その余分なサポートコードはすべて、GUIソースが肥大化して面倒なように見えます。
では、これについて何ができますか?また、リファクタリングをより簡単にする方法はありますか?さて、最初にリファクタリングの定義を、時々行うことから、コーディング中に継続的に行うことに変更します。どうして?リファクタリングを使用して、コードをより簡単に変更できるようにしたいので、その逆ではありません。ここでセマンティクスを変更するように単純に求めるのではなく、コードを別の方法で見るために、少しメンタル体操を行うように求めています。
最もよく使用する3つのリファクタリング手法は、Rename、Extract Method、およびExtract Classです。私が他のリファクタリングを一度も学んだことがない場合、これらの3つはまだコードをきれいで構造化された状態に保つことができ、あなたの質問の内容から、おそらく同じGUIコードを薄く清潔に保つため。
世界でGUIとビジネスロジックを可能な限り分離することができますが、GUIコードは、コードマイニングが途中で爆発したように見えます。私のアドバイスは、GUIを適切に管理するのに役立つ追加のクラスを1つまたは2つ用意しても害はないということです。MVCパターンを適用する場合、これは必ずしもViewクラスである必要はありません。中間クラスはビューに非常に似ているため、便宜上、それらをマージする必要があることがよくあります。これに関する私の見解は、すべての視覚的ロジックを管理するために追加のGUI固有のレイヤーを追加することは実際には害にはならないということです。
したがって、私のアドバイスは:
- GUIをView(または中間層)にフックする方法を呼び出して定義する以外は、GUIのすぐ後ろで何もしません。
- あなたがそうすることが理にかなっていない限り、すべてのビューに関連するものを単一のクラスに、またはGUIウィンドウごとに単一のクラスにすらしようとしないでください。別の方法は、GUIロジックを管理するために、管理が簡単でクラスを多数作成することです。
- メソッドがコードの4〜5行より少し大きく見えるようになったら、これが必要かどうか、そしてメソッドを抽出できるかどうかを調べて、クラスを意味する場合でもメソッドを無駄にしないようにします。より多くの方法で。
- クラスが非常に大きく見え始めている場合は、重複する機能をすべて削除してから、別のクラスまたは2つを抽出できるようにメソッドを論理的にグループ化できるかどうかを確認します。
- コードを書くたびにリファクタリングを考えてください。動作するコード行を取得した場合、機能の重複を避けるためにリファクタリングできるか、または動作を変更せずに少しリーンにすることができるかどうかを確認してください。
- 避けられないことを受け入れてください。特に、リファクタリングを怠ると、システムのある部分または別の部分が少し肥大化し始めます。十分にファクタリングされたコードベースを使用しても、さらに多くのことができるように感じることができます。これはソフトウェアを書くことの現実です。あなたは、もっと何かが「より良く」できたはずだと常に感じるので、プロの仕事と金メッキの間のバランスを取る必要があります。
- コードをきれいにしようとすると、コードが肥大化することは少なくなります。