擬似コードは、言語に依存しない方法でタスクを理解するのに役立ちます。開発ライフサイクルの一部として擬似コードを作成することは、ベストプラクティスですか、または推奨されるアプローチですか?例えば:
- コーディングタスクの特定と分割
- 擬似コードを書く
- [PLまたはTLによる]承認を得る
- 擬似コードに基づいてコーディングを開始する
これは推奨されるアプローチですか?業界で実践されていますか?
擬似コードは、言語に依存しない方法でタスクを理解するのに役立ちます。開発ライフサイクルの一部として擬似コードを作成することは、ベストプラクティスですか、または推奨されるアプローチですか?例えば:
これは推奨されるアプローチですか?業界で実践されていますか?
回答:
コーディングの前に擬似コードを書くことは、計画せずにコーディングするよりも確かに優れていますが、ベストプラクティスとはほど遠いものです。テスト駆動開発は改善です。
さらに良いのは、クリーンルーム、RUP、リーン、かんばん、アジャイルなどの方法論で採用されているように、ユーザーストーリー、ユースケース、CRCカード、ダイアグラムなどの手法を使用して、問題ドメインを分析し、ソリューションを設計することです。
問題の性質とソリューションの実装に使用するコンポーネントを完全に理解することが、ベストプラクティスの背後にある原則です。
いいえ、最初に擬似コードをしないでください
これはオーバーヘッドが大きすぎます。あなたは、メリットをまったく持たずにロジックを記述する作業を行っています。代わりに次のいずれかをお勧めします。
これら3つはすべて、擬似コードとは異なり、ソリューションに直接移動します。個人的には、チームの規模に応じてテクニック1または2を使用する傾向があります。小規模な(5人以下の)チームの場合、プロトタイピングは非常にうまく機能します。複数の開発者グループが並行して作業している大規模なチームの場合、テクニック2によって早期に作成されたドキュメントが適切に機能することがわかりました。TDDも非常にうまく機能すると確信していますが、このプロセスに取り組んできたチームにまだ取り組んでいません。
擬似コードは推奨されるアプローチですか?初心者のプログラマーの場合、はいと言います。新しいプログラマーは、言語の正確な構文を心配することなく、問題をコードに変換する方法を学ぶのに役立ちます。これにより思考プロセスが形作られ、有用な習慣を根付かせることができます(そして悪い習慣もあると思います)。これが学校で多く使用されている理由です。
業界で実践されていますか?私の経験では、いいえ。ドキュメンテーション(要件、仕様、ストーリーボード、ユースケースなど、使用するもの)と実際のコードとの間でプロジェクトを荒らす時間はありません。一般に、青信号がコーディングされる前に、十分な思考がすでに問題に置かれていると想定されています。その時点で、プロジェクトのコーディングは、設計準備のレイヤーをもう1つ追加するよりも重要です。
擬似コードは、言語に不慣れな場合や、メンタルコンテキストを変更する必要がある場合に役立ちます。まれに私が擬似コードを書くのは、紙の上です。キーボードから手を離し、紙に落書きするだけで精神障害を回避できる場合があります。
しかし、開発プロセスの正式な部分として?とんでもない。これは、個人にとっては散発的に役立つツールです。「書く前に何を書いているかを知る」より良い方法があります。例えば:
また、コードの記述を開始する前に何らかの承認を取得することは、価値があるよりもはるかに面倒になる可能性があることをお勧めします。設計レビュー(実装前)は有用ですが、個々のアルゴリズムよりも高いレベルにする必要があります。
過去10年間に擬似コードを使用したのは、ホワイトボードで作業しているときのインタビューで、特定の言語は関係ありません。
構文にとらわれずに、疎い用語でプロセス/アルゴリズムを話すのに確かに役立ちます。たとえば、ポイントを説明するために、C#プロパティを持つC ++クラスを作成します。
それは場所を持っていますが、必要な場合にのみ使用する必要があります(捨てる作業です)、それを主張するISOタイプの標準がない限り、確かに正式なプロセスの一部ではありません。
私自身と私がここ数年一緒に仕事をしてきた人々にとって、疑似コードは完全に完全ではない実際のコードに変わりました。同時に多くの言語で作業しない限り、ほとんどの人は主言語の一般的なパターンで考え始めるようです。私はしばらくの間.netショップで働いてきたので、オフィスの周りのほとんどの人のホワイトボードの落書きは、句読点の一部が欠けているvbまたはc#のように見える傾向があります。
この演習は、オプションなどを議論する際にまだ価値がありますが、言語にとらわれないビットは、いくつかの言語でより多くの時間を費やすにつれて離れる傾向があります。
ますます、擬似コードはUMLなどのツールを使用してグラフィカルに記述されます。たとえば、yUMLを試してください。
シンプルなUMLダイアグラムを作成および公開するためのオンラインツール。次のことが非常に簡単になります。
- UML図をブログ、メール、ウィキに埋め込みます。
- フォーラムやブログのコメントにUML図を投稿してください。
- Webベースのバグ追跡ツール内で直接使用します。
- UML図をコピーして、MS Word文書とPowerPointプレゼンテーションに貼り付けます...
... yUMLは時間を節約します。小さなUML図やスケッチを作成したい人向けに設計されています。
yUMLを使用しない場合、UMLダイアグラムの作成には、UMLツールのロード、ダイアグラムの作成、名前の付け、レイアウトの操作、ビットマップへのエクスポート、オンラインでのアップロードが含まれます。yUMLはあなたにそれをさせません...
すごい仕事。良い議論を始めました。私のように、私はさまざまなループとアルゴリズムを理解するためにプログラミングを学んでいたときに擬似コードを書いていました。これは1年半前のことです。その日は、プログラミング言語でさえそれほど強力ではありませんでした...そしてイベント駆動型プログラミングは未来でした。現在、4GLと5GLでは、単純な英語ではなく言語自体で考えています。問題を考えるとき、オブジェクトと操作の観点から考えます。そして、複雑なアルゴリズムになるまで、擬似コード(またはPSEU-DO-Codes、単なる冗談)を書くことは意味がありません。より良いのは、ソリューションをグラフィックで表現することです。
私の仕事で疑似コードが破綻する傾向があるいくつかの状況があります。これは、プログラミングがツールとして使用される傾向がある学問で、またはプロジェクトの途中で「そして今解決します」:
これは、はい/いいえの質問ではありません。むしろ、いつ擬似コードを使用するのか疑問に思うはずです。ソリューションを設計する前に問題を理解することが重要であり、ソリューションを実装する前にソリューションを明確に把握することが重要です。擬似コードは、次のいずれかの手順で使用できます。
高級言語で実際に適切なコードである擬似コードも使用されます。これは通常、プロトタイピングと呼ばれます。
理解を達成することに加えて、擬似コードはコミュニケーションにも適しています。
擬似コードを定期的に使用すべきかどうか疑問に思っているなら、私は個人的にあらゆる種類の厳格なルールに反対しています。チームの誰もが理解している些細な問題にこれを使用すると、これは退屈な時間の無駄に簡単に変わります。プロジェクトの全期間を通じて維持する仕様に擬似コードを使用することも、コストがかかり、ほとんど価値がありません。