私はこの状況をよく知っています。そのように動けなくなったら、プロジェクトについてさまざまな視点をとろうとします。
1.)ユーザー/顧客の視点-フィードバックを使用
残念ながら、私たちはアプリケーションをコーディングした方法で使用するため、自分の欠陥を見ることができない方法でコードに巻き込まれています。人々がそれをどのように使用するかを見て、最も直感的なユーザーガイダンスが何であるかを理解してください。UIプロトタイプを試してみてください。これは楽しいように思えますが、使用ロジックを変更するだけでコードの大部分を再コーディングしなければならないことがわかった場合は、再設計サイクルを開始するときが来ます。
2.)コードの機能分析を行い、それを視覚化する
いくつかのIDEとフレームワークは、たとえばUIとバックエンドコードの混合に追い込みます。これを実現させると、いつか、依存関係が曖昧で壊れにくいために、コードベースを維持できなくなる状況に直面することになります。特にUIコードと他のコードを混在させると、スパゲッティコードと冗長な機能につながる可能性があります。データベースクラス、通信クラス、UIクラス、コアクラスなどの機能ブロックにコードを分割し、機能ブロックに名前を付けます。次に、グラフィカルツール(私はマインドマッピングツールを使用)で機能を視覚化して、構造が論理的かつモジュール式であり、さまざまなプロジェクトで巨大なコードブロックを再利用できるかどうかを確認します。大きな痛み。
私の経験でこれを行う最良の方法は、クラスとコードからの呼び出しとの間のすべての依存関係を視覚化するドキュメントを作成することです。その結果、インターフェース設計が視覚化されます。このコードマップが完全なclusterf ***のように見える場合は、動作する時です。まだ発生していない場合は、コード構造を表す適切な命名規則を考えてください。コード構造を呼び出す方法とその機能について考える必要はありません。
3.)品質保証への一般的なアプローチの使用
私のお気に入りはFMEAです。コーディングに関しては、これは過去に何がうまくいかなかったかを分析するだけでなく、何がうまくいかないかを考えることも意味します。非常に一般的な例は、突然接続が切断されたネットワークです。これを行った後、データ損失、クラッシュ、誤った計算などの結果によってエラー条件を分類し、ユーザーへの影響を判断できます。まだ行われていない場合は、合理化されたエラーと例外のクラスとルーチンを定義することで、コードをクリーンでまっすぐに保つことができます。最善の方法は、他の何かを書き始める前に、新しいコードのすべてのピースにそれらを実装することです。(まあ、私は常に自分自身でこのアドバイスに従うのは罪だ。)
さらに、自分のコードの「改善提案リスト」を生成し、頻繁に更新するのに役立ちました。(正直なところ、私のプロジェクトにはまだ私が誇りに思っていないコードがたくさんあります。)また、APIドキュメント、開発者会議、または開発者雑誌からベストプラクティスコードを収集して見てみることも心がけています。
この時点まで、コードに触れる必要はありません。それは単に、何が間違っているのかを認識し、コードを改善する方法を定義する方法を見つけることです。
最後に、古いおならからの毎日の仕事のためのいくつかのヒント。あなたが食べることができるより多くを噛まないようにしてください。これは、きれいなコーディングを行うための過度のプレッシャーにつながります。あなたはめったにそれを正しくする時間を得ることはできませんが、後で欠陥を修正するために時間をかける必要があります。
暫定的なソリューションほど長続きするものはありませんが、それが壊れた場合、時間内に修正するのが遅れることがよくあります。例は、基になるフレームワークまたはOSの欠陥などにも関わらず、何かを動作させるために使用した厄介なハックや奇妙な例外です。そして、欠陥が修正されるか、新しいバージョンが単にAPIをドロップします…
立ち往生していて、回避策を見つけることを余儀なくされた場合は、コメントを作成し、時々確認する必要があるメモを取ります。通常、私たちは何か新しいことを学ぶことで、どんどん良くなります。より良い方法を見つけたら、できるだけ早く実装してください。そうしないと、回避策の回避策と例外の例外をいつかコーディングしていることに気付くかもしれません。(あなたの中に罪のない人、彼に最初のバイトを投げさせてください。)