私の経験則では、3番目に何かをしなければならないときは、それを自動化するために小さなスクリプトを書くか、または私のアプローチを再考するときです。
私はこの時点では本格的な「ツール」を作成していません。以前は手動で行ったことを自動化する小さなスクリプト(通常はbashまたはpython。perlも動作します。PHPも)です。それは基本的にDRY原則(または本質的に同じものである単一ソースの真実の原則)のアプリケーションです-2つのソースファイルを同時に変更する必要がある場合、それらが共有するいくつかの共通の真実がなければなりません。真実は、1つの中央の場所に因数分解して保存する必要があります。リファクタリングによって内部的にこれを解決できるのは素晴らしいことですが、場合によってはこれが実行不可能であり、そこにカスタムスクリプトが登場します。
その後、スクリプトは本格的なツールに進化する場合と進化しない場合がありますが、私は通常、多くのことをハードコーディングした非常に具体的なスクリプトから始めます。
私は情熱を持って不平を言うのは嫌いですが、それはデザインが悪いか間違っていることの表れでもあると強く信じています。プログラマーにとって怠laであることは重要な品質であり、反復作業を避けるためにかなりの時間を費やすような種類であることが望ましいです。
もちろん、バランスがマイナスになることもあります。コードのリファクタリングやスクリプトの作成に3時間費やして、1時間の反復作業を節約できます。しかし、通常、バランスはプラスであるため、直接明らかではないコストを考慮すると、人間の失敗(人間は繰り返し作業が非常に苦手です)、コードベースが小さい、冗長性の低下による保守性の向上、自己文書化の向上、将来の高速化開発、よりクリーンなコード。そのため、現在残高がマイナスに見えても、コードベースはさらに大きくなり、3つのデータオブジェクト用のWebフォームを生成するために作成したツールは、30個のデータオブジェクトがある場合でも機能します。私の経験では、バランスは通常、単調な作業を優先して推定されます。おそらく、反復タスクは推定が容易であり、したがって過小評価されているためです。一方、リファクタリング、自動化、および抽象化は、予測可能性が低く、より危険であるため、過大評価されていると認識されています。通常、結局のところ、自動化はそれほど難しくないことがわかります。
そして、遅すぎるリスクがあります。3つのまったく新しいデータオブジェクトクラスをシェイプにリファクタリングし、それらのWebフォームを生成するスクリプトを書くのは簡単です。そして、それを行うと、27のクラスを簡単に追加できますスクリプトでも動作します。しかし、30個のデータオブジェクトクラスがあり、それぞれが手書きのWebフォームを持ち、それらの間に一貫性がない(「有機的成長」とも呼ばれる)ポイントに到達した場合、そのスクリプトを書くことはほぼ不可能です。これらの30のクラスをフォームで維持することは、コーディングの繰り返しと半手動の検索置換の悪夢であり、一般的な側面の変更には30倍の時間がかかりますが、問題を解決するスクリプトを作成して、プロジェクトが開始されたとき、昼休みは簡単でしたが、今はバグを修正し、ユーザーを教育し、場合によってはあきらめて元に戻すことからなる1か月の余波の恐ろしい見通しを持つ恐ろしい2週間のプロジェクトです古いコードベース。皮肉なことに、30クラスの混乱を書くことは、いつも便利なスクリプトに乗っていた可能性があるため、クリーンなソリューションが持っていたよりもずっと長くかかりました。私の経験では、繰り返し作業をあまりにも遅く自動化することは、長時間実行される大規模なソフトウェアプロジェクトの大きな問題の1つです。便利なスクリプトにずっと乗っていたからです。私の経験では、繰り返し作業をあまりにも遅く自動化することは、長時間実行される大規模なソフトウェアプロジェクトの大きな問題の1つです。便利なスクリプトにずっと乗っていたからです。私の経験では、繰り返し作業を遅らせる自動化は、長時間実行される大規模なソフトウェアプロジェクトの大きな問題の1つです。