プログラミングの仕事を始めたばかりで、「コーディングの仕方」の知識を「プログラミングの仕方」で教えられているものに適用しています(違います!)。この一環として、新しいプロジェクトを開始する前に、クライアントから要件を取得する方法を学びました。だが...
曖昧な個人プロジェクトでこれをどのように行うのですか?
私は曖昧なことを言っています。何かをプログラミングしている途中で見つけることが多いので、自分のプログラムでできることを拡張したり、結果を変えたいと思っています。結局、コードに巻き込まれ、再起動する必要があります。これはイライラさせられ、不快なものになる可能性があります。逆に、固定されたタスクと固定された要件が与えられた場合、掘り下げてそれを実行する方がはるかに簡単です。
職場で「今日/今週はプログラム1にXYZを追加する必要がある」と言われるかもしれませんが、それは簡単です。自宅で(おもしろいですが)たとえば、任意のリストを作成するプログラムを作りたいと思います。これは非常に一般的なタスクです。どうやってそれから始めますか?何かをする必要はありませんが何かしたいのですが。
それでは、個人的なプログラミングプロジェクトをどのように計画しますか?
あなたの目的が学ぶことであるならば、あなたがしていることに何の問題もありません。多くの開発者は、興味深いものすべてを完成させたときに、一連の半分作成されたアプリケーションを背後に残しています。
ただし、何かを書いてそれを完成させたい場合は、解決したい問題を選び、それを解決するために必要な最小限のことを行ってください。既存のライブラリとコード例を使用して、一緒にハックします。何かうまくいったら、戻ってそれをクリーンアップして展開します。
[編集]
あなたがインスピレーションを探しているなら、始める場所がたくさんあります。 Microsoftには coding 4 fun サイトがあります。 github.comやcodeplex.comなどのサイトには、修正、改善、自動テスト、およびドキュメントを必要とする何千ものオープンソースアプリケーションがあります。他の人のコードを読むことも、新しいテクニックやライブラリを学ぶのに役立ちます。
役割の拡大おめでとうございます。要件の抽出と要件の管理は、開発者にとって2つの優れたスキルです。これらの役割は、開発組織外の製品マネージャーによって完全に制御される場合があり、結果は非常に制限される場合があります。
拡張とメンテナンスを容易にするソフトウェアを設計することは、私たちが行うすべてのことに大きな影響を与えます。 "システムをモジュールに分解する際に使用される基準について" 、D.L. Parnasはプロジェクトを2回実装しました。1回は機能分解、もう1回はデータ指向分解です。次に、いくつかの新機能を追加し、コードへの影響に関するメトリックを取得しました。主な留意点は、2つの方法には、変更可能性、独立した開発、および包括性について非常に異なる特性があるということです。
A-7EアビオニクスシステムのケーススタディとしてParnasによって公開されたその後の作業と、カプセル化、情報の非表示、および基本的にプロトオブジェクト指向の設計の使用は、オブジェクト指向プログラミング言語とその後の分析と設計に非常に影響を与えました。また、Bass、Clements、およびKazmanによる本 "Software Architecture in Practice" にも記載されています。
あなたは、あなたの個人的なプロジェクトの範囲を拡大するとき、あなたのコードが絡まると述べました。軌道に乗せるために、以下を使用することを検討してください。
お役に立てれば。あなたの質問は、Stack Exchangeに関するさまざまな役立つ回答を引き出します。
私はアクトンに同意します。
実用的な製品を作成しようとしている場合。それを定義し、設計してから、コーディングします。
Jeff Attwoodが KISS and YAGNI についてブログに書いています。
テスト駆動開発 を調べて、プロジェクトを破棄したり、ゼロから再起動したりしないようにします。アプリがすべてのテストに合格した場合は、コードの不要な部分をリファクタリングできます。赤、緑、リファクタリング。