web-dev-qa-db-ja.com

コードの書き換え/初期アウトラインの改善

シングルプログラマープロジェクト。進行中のプロジェクトでは、常に自分のコードを書き直す必要があります。バグはありませんが、プログラム(以前に計画された機能)を拡張するたびに、以前のクラスを拡張する必要があり、以前は正常に機能していたコードを書き直すことになります。

私はユニットテストを行っているので、バグは発生しませんが、それでも逆効果のようで、時間を無駄にしているようです。私は常に必要ではなかった機能を追加していますが、プロジェクトが複雑になるにつれて必要になります。

この反復型開発を継続する必要がありますか?新しい機能が追加されるにつれて、繰り返しごとに古いコードをどんどん書き直さなければならないようです。

プロジェクトを管理するためのより良い方法はありますか?私は自分のプログラムに何をさせたいのか、そしてそれをどのように行うのかを(おおよそ)知っています。
また、一人のプロジェクトを管理するためにどのようなツール/開発哲学を使用する必要がありますか?私は実行中のやることリストを持っています(そしてそれがすべてです)これまでのところ素晴らしい仕事をしています。たぶん、ある種の抽象クラス概要プログラム?

3
David

プロジェクトで何をしたいかがわかっていて(ほとんどの場合)、「顧客」との絶え間ないやり取りがないため、反復的なアプローチを使用すると、不要なオーバーヘッドが発生する可能性があります。反復的なアプローチは、要件をその場で変更する可能性のある顧客と頻繁に通信できる小規模なチームに最適だと思います。一般化を強化し、繰り返しを減らすために、すべてを事前に計画することでメリットが得られるようです。たぶん、いくつかの計画ベースのアプローチを検索しますか?もちろん、正式なドキュメントを生成する戦略と従うべきではないすべての戦略(非常に非公式なもので十分です...可能であればDoxygenを検討してください)。

すべてをモデル化したい場合(問題を考えると良い考えのようです)、UML図のような形式的なものを使用できます。これは、1人のプロジェクトにとっては少し過剰に思えますが、すべてを高レベルの抽象化で追跡するのに役立ちます。

2
Casey Patton

この反復型開発を継続する必要がありますか?

はい

以前は予期できなかった新機能をサポートする必要があるため、以前に記述したコードを書き直したり拡張したりしている可能性があります。これを行うために時間をかけることは(特にあなたが許可されている場合)、長期的にはあなたに大きな利益をもたらします。

ただし、常に新しい予期しない動作を実装する必要がある場合、これはもう少し時間がかかることを示している可能性があります機能の絞り込み。正しい抽象化の決定は、主に必要な機能を評価することによって行われます。

プログラマーであるということは、単に「コードを書く」だけでなく、適切なバランスを見つけるシステムの設計において「物事を成し遂げる」、および '拡張性のサポート'

1
Steven Jeuris

それはまだ逆効果のようで、時間を無駄にしているようです。私は常に必要ではなかった機能を追加していますが、プロジェクトが複雑になるにつれて必要になります。

そう?

ソフトウェアは他にどのように成長できますか?

どういうわけか天才になり、未来を予見できると期待していますか?

この反復型開発を継続する必要がありますか?

どのような選択肢がありますか?完璧な先見性以外に?

プロジェクトを管理するためのより良い方法はありますか?

はい。完璧な先見性。

私は実行中のやることリストを持っています(そしてそれがすべてです)これまでのところ素晴らしい仕事をしています。たぶん、ある種の抽象クラス概要プログラム?

それが私たちが「デザイン」と呼んでいるものです。それは非常に難しく、簡単なことは何もありません。

新しい機能が追加されるにつれて、繰り返しごとに古いコードをどんどん書き直さなければならないようです。

ソフトウェア開発へようこそ。

0
S.Lott