るべきか、あるいは利用擬似コードの実現のためにコ?
https://softwareengineering.stackexchange.com/questions/12683
-
16-10-2019 - |
質問
擬似コードの理解に貢献でき課題は、言語-agnosticます。で実践されるアプローチして擬似コード作成の一環として開発ライフサイクル?たとえば、次のようになります。
- を識別して分割のコーディング業務
- 擬似コードを書く
- で承認され【PLはTL]
- 始め符号化に基づく擬似コード
これらのアプローチを考えていますか。で実践される。
解決
CODOCODEの前に擬似コードを書くことは、計画せずにコーディングするよりも確かに優れていますが、ベストプラクティスではありません。テスト駆動型開発は改善です。
さらに良いことは、クリーンルーム、RUP、リーン、カンバン、アジャイルなどの方法論によって支持されるように、ユーザーストーリー、ユースケース、CRCカード、図などの手法を使用して、問題ドメインと設計ソリューションを分析することです。
問題の性質とソリューションの実装に使用するコンポーネントを徹底的に理解することは、ベストプラクティスの背後にある原則です。
他のヒント
コメントを書く前にコメントを書くという点で、コメントを一種の非常に高いレベルの擬似コードとして使用しています。問題全体を考えると、高レベルであっても、コードが大幅に向上することがわかります。
いや、擬似コードを最初に
これは、やりすぎオーバーヘッド。やっているのに書き込むロジックとなります。思いのではなく:
- 試作におい船(通称 書家)
- 建築図w/コードスニペットをテストの想定キー-デザイン
- 試験開発が書きインタフェース/コードの構造、試験の後に実施しています。
すべてのこれらの動きを直接に向けソリューションとは異なり、擬似コードです。個人的にしてしまいがちな利用手法1または2によってチームのサイズです。小(5人以下)チームは試作品です。大きなチームとして複数のグループの開発者並行がその場で発音を確認することがこの文書生初期の技術の2作品ですっての早期の定義にもつなげられます。部境界です。思TDDも非常にうまくなってい作業チームであったに努めます。
私の意見では、擬似コードには2つの有効な目的しかありません。
(1)モジュール性とアルゴリズムの概念を学習する必要があるが、まだプログラミング言語に堪能ではないプログラミング学生向け。
(2)何かが技術者ではない人にどのように機能するか、またはホワイトボードタイプの会議で便利さのためにどのように機能するかを伝える。
擬似コードは提案されたアプローチですか?プログラマーを始めるために、私はイエスと言います。新しいプログラマーが、言語の正確な構文を心配することなく、問題をコードに変換する方法を学ぶのに役立ちます。これは思考プロセスを形成し、有用な習慣を生成するのに役立ちます(そして、私も悪い習慣だと思います)。これが学校で非常に使用されている理由です。
業界で実践されていますか?私の経験では、いいえ。ドキュメント(要件、仕様、ストーリーボード、ユースケースなど)と実際のコードの間でプロジェクトを削除する時間はありません。一般的に、コードするために緑色の光が前に問題に十分な思考がすでに投入されていると想定されています。その時点で、プロジェクトのコーディングは、設計準備のもう1つの層を追加するよりも重要です。
Pseudocodeをお勧めします。これは、自分が何をしようとしているかを明確にし、忘れている可能性のあるアイテムや潜在的な問題を特定するのに役立ちます。コードの大部分をすでにコーディングするまで待つのではなく、計画段階にあるときにコードを修正するのがはるかに簡単/高速です。
擬似コードは、言語に不慣れな場合や、精神的な文脈を変更する必要がある場合に役立ちます。私が擬似コードを書くまれな機会に、それは紙の上にあります。キーボードから手を離して紙の上で落書きするだけで、精神的なブロックを回避するのに役立つ場合があります。
しかし、開発プロセスの正式な部分として?とんでもない。それは個人にとって散発的に役立つツールです。次のように、「あなたが書く前にあなたが書いていることを知る」方法はあります。
- 開始前にメソッドの契約(前/ポスト/不変条件)を定義する
- TDD
- 1と2の組み合わせ(契約を実行するためのテストを作成)
また、コードの作成を開始する前に、あらゆる種類の承認を得ることは、それが価値よりもはるかに面倒なものになる可能性が高いことをお勧めします。設計レビュー(事前実装)は有用ですが、個々のアルゴリズムよりも高いレベルにある必要があります。
私は以前の答えに反対し、ノーと言うつもりですが、警告があります。Psuedocodeを取り除くことができます。 Psudocodeは、本質的に、コードを定義する前にコードを定義する方法です。多くの状況では不必要な抽象化であり、コードが初めて完璧になることはないので(そしておそらくPsudocodeの設計に従って完了することはありません)、それは私にとって無関係のようです。
COBOLまたはCを記述している場合、実際のコードを書くのに時間がかかるため、PSEUDOCODEが役立つ場合があり、擬似コードからアルゴリズム/要件を検証できる場合は、時間を節約できます。
より近代的な言語では、Pseudocodeはそれほど意味がありません。より良いのは、メソッドスタブを作成し、トップレベルのロジックを記入し、アルゴリズムと要件を検証するために必要な詳細を実際のコードで確認することです。その後、承認のためにチームのリードにそのコードを表示し、実際のコードを既に開始することができます。
過去10年間でPseudocodeを使用したのは、ホワイトボードで作業しているときにインタビューで、特定の言語は重要ではありません。
構文に揺れ動くことなく、プロセス/アルゴリズムをゆるい用語で話し合うことは確かに役立ちます。たとえば、ポイントを説明するためだけに、C#プロパティを備えたC ++クラスを作成します。
その場所がありますが、必要に応じて使用する必要があります(あなたが捨てるのは作業です)、そしてそれを主張するISOタイプの標準がない限り、確かに正式なプロセスの一部ではありません。
私自身と私が過去数年間一緒に仕事をしてきた人々にとって、Pseudocodeは完全に完全ではない本当のコードに変わりました。あなたが同時に多くの言語で作業しない限り、ほとんどの人は彼らのメイン言語の一般的なパターンで考え始めるようです。私はしばらく.NETショップで働いていたので、オフィスの周りのほとんどの人のホワイトボードの落書きは、VBまたはC#のように見える傾向があり、句読点のいくつかはありません。
オプションなどを議論する際には、この演習は依然として貴重ですが、言語の不可知論的なビットは、いくつかの言語でより多くの時間を費やすにつれて漂う傾向があります。
ますます、PseudocodeはUMLのようなツールを使用してグラフィカルに書かれています。たとえば、試してみてください yuml.
簡単なUML図を作成および公開するためのオンラインツール。それはあなたにとって本当に簡単になります:
- ブログ、電子メール、ウィキにUML図を埋め込みました。
- フォーラムやブログのコメントにUML図を投稿します。
- Webベースのバグ追跡ツール内で直接使用します。
- UMLダイアグラムをMS WordドキュメントとPowerPointのプレゼンテーションにコピーして貼り付けます...
... yumlはあなたの時間を節約します。それは、小さなUML図とスケッチを作成するのが好きな人のために設計されています。
yumlがなければ、UML図を作成するには、UMLツールのロード、図の作成、名前の作成、レイアウトをいじる、ビットマップにエクスポートし、どこかでオンラインでアップロードすることが含まれる場合があります。 yumlはあなたにそのいずれかをさせません...
すごい仕事。あなたは良い議論を始めました。私のように、私はさまざまなループやアルゴリズムを理解するためのプログラミングを学んでいたときに、擬似コードを書いていました。これは1年半前でした。その日、プログラミング言語でさえそれほど強力ではありませんでした...そしてイベント主導のプログラミングは将来でした。現在、4GLと5GLSを使用して、私たちは言語自体ではなく、平易な英語ではなく言語自体を考えています。問題を考えると、オブジェクトと操作の観点から考えます。そして、それが複雑なアルゴになるまで、疑似コード(または冗談です)を書くことは意味がありません。より良い方法で、グラフィックの方法でソリューションを表してください。
使用される言語とそれに精通していることに依存します。
PythonやJavaなどの多くの現代言語は、すでに擬似コードに非常に近いため、最初にアドホックな擬似コードを書くことは無駄です。すぐに使用してください トレーサーの弾丸 アプローチ。
あなたがいくつかの低レベル、金属に近いものを作っているか、あなたが使用している言語にまだ満足していない場合、それは別の取引です。その場合、Pseudocodeは間違いなく役立ちます。
擬似コードが私の仕事で壊れる傾向があるいくつかの状況がある傾向があります。これは、プログラミングがツールまたは「そして今、私たちはそれを解く」プロジェクトの途中で埋める傾向があるアカデミアです。
- コードが、擬似コードよりも何が起こるかを実際に理解することに対してより逆効果になる場合。たとえば、SASは、かなり基本的なプログラミングタスクを行っているホワイトボードの半分を占めます。他のいくつかのポスターが議論したCも参照してください。
- 多くのデータ分析と統計コーディングにより、結果が生成されるにつれてコードをいじくり回す傾向があります。 Pseudocodeは、診断プロットが正しく見えない場合は、「ここでは前後のプロセスがあります。Xを試してください」で使用しやすくなります。
- 学生はさまざまなプログラミング言語を学びます。たとえば、私が知っている人の間では、SAS、R、またはSTATAで統計問題が分析される可能性があります。従来のプログラミングに近い何かを必要とする何かは、R、Matlab、C、C ++、Java、Pythonで行われる可能性があります...それは、特定の学生がプログラムを実装しているものと、どのような目的に依存します。しかし、Javaの人々とPythonの人々とMatlabの人々が、他の人が何をしているのか、どのように アプローチ, 、コード自体ではなく、機能します。
これはYES/NOの質問ではありません。むしろ、疑問に思うべきです いつ 擬似コードを使用するには。ソリューションを設計する前に問題を理解することが重要であり、ソリューションを実装する前に、ソリューションを明確に見ていることが重要です。擬似コードは、これらのステップのいずれかで使用できます。
- 問題を定義するときは、ユースケースを書き留め、時には一連のアクションを使用することが一般的です。
- ソリューションを設計するとき。クラス図は優れていますが、「静的」部分、つまりデータのみを説明しています。動的な部分については、ループと非自明のデータを処理する必要があるとすぐに、擬似コードが利用可能な最良の方法であると思います。グラフィカルな代替品には、状態マシン(データがほとんどない複雑な制御フローに適しています)とデータフロー図(複雑なデータを持つ単純なフローに適しています)が含まれます。
- ソリューションを実装するとき(または直前)。一部のプログラミング言語は読みにくい(考えてみてください)。この場合、代替表現は価値があります。言語に不慣れな場合は、それも価値があります。
実際に高レベルの言語で適切なコードである擬似コードも使用され、通常はプロトタイピングと呼ばれます。
理解を深めることに加えて、擬似コードはコミュニケーションにも適しています。
擬似コードを定期的に使用する必要があるかどうか疑問に思っている場合、私は個人的にあらゆる種類の厳格なルールに反対しています。チームの全員が理解している些細な問題に使用されると、これは簡単に時間の退屈な無駄になります。プロジェクトの生涯を通じて維持する仕様に擬似コードを使用することも、費用がかかり、ほとんど価値を提供することができます。