1

モバイルアプリ(サーバーでlaravelを使用する)の作成を開始したとき、実際に機能するアプリを最初に取得する方がよいと考えたため、テストやコーディング標準を掘り下げないことにしました。

数か月後、アプリが動作しましたが、コードは標準に従っておらず、テストも作成していません。

私が使用している現在のディレクトリ構造は次のとおりです。

ここに画像の説明を入力

app/controllers : アプリが使用するすべてのコントローラーが含まれます。コントローラーは正確に薄いわけではありません。ほとんどのロジックが含まれており、一部には複数の条件文 (if/else) もあります。データベースとのやり取りはすべてコントローラーで行われます。

app/models : 他のモデルとの関係を定義し、特定のモデルに関連する特定の関数を含めます。検証機能。

app/libraries : カスタム ヘルパー関数が含まれています。

app/database : 移行とシードが含まれています。

私のアプリは現在動作していますが、たるみの理由はおそらく私がアプリで一人で作業しているためです.

私の懸念:

  1. 先に進んでアプリをリリースしてから、リファクタリングの努力をする価値があるかどうかを確認する必要がありますか、それとも最初にリファクタリングする必要があります。

  2. コードをリファクタリングしたいのですが、どのアプローチをとるべきかわかりません。最初に標準を正しく設定してから、コードをテスト可能にする必要がありますか? または、標準について心配する必要はなく(そしてクラスマップを使用してオートロードを続けます)、コードをテスト可能にするだけですか?

  3. ファイルをどのように構成すればよいですか?

  4. インターフェイス、抽象クラスなどはどこに配置すればよいですか?

注: 私は見つけたリソースからテストとコーディングの標準を掘り下げていますが、リソースを教えていただければ幸いです。

4

1 に答える 1

2

まあ。レガシー コードの古典的な定義は、単体テストのないコードです。したがって、このコード ベースを修正/強化/再利用する必要がある場合は、かなりのコストを負担しなければならないという不幸な状況に陥っています。現在の実装から遠ざかるほど、そのコストは高くなります。いわゆる技術的負債です。ただし、テスト可能なコードを作成しても問題が解決するわけではなく、金利が下がるだけです。

やるべきですか?もしあなたが今リリースして、それがある程度の人気を得て、それゆえにもっと何かをする必要があるとしたら...

それが完全に無関心または落胆の叫び声で受け取られるのであれば、それを解放する意味はまったくありません。実際、それは非生産的です.

コードベースを使い続けることを選択した場合、ユニットテストを行わずにコーディング標準に合わせてリファクタリングする効率的な方法は見当たらず、そうすることでアプリが壊れていないことを証明できます。テスト可能でテスト済みが重要な部分ではないコーディング標準を見つけた場合は、それを無視してください。

もちろん、コードを壊さずにテスト可能にするためにコードをどのように変更するかという問題はまだあります。ファットコントローラーでデリゲートを行うことで、それほど問題なく反復できると思います。2つのキーポイント。完全に手動のテストであっても、最初に少なくともいくつかのテストを行ってください。何かをする前に、Web ページを印刷してください。おそらく自動化スイートを使用した一連の統合テストは、特に結合の問題がすでにある場合に非常に役立ちます。

もう 1 つは、一度に多くの変更を加えないことです。変更が多すぎるということは、このコードによって影響を受けるアプリ内の操作の数を意味します。

詳細を知りたい場合は、Robert C Martin (所属は問いません) の Working With Legacy Code を購入することをお勧めします。

うまくいけば、このレッスンはすでに学習されています。二度とこれをしないでください。

最後になりましたが、この種のエクササイズを行うことは素晴らしい学習体験です。

于 2014-07-10T17:15:36.803 に答える