機能を実装するための良いアイデアがない場合はどうなりますか?[閉まっている]


32

私は自分のアプリケーションに取り組んでおり、立ち往生しています。機能を実装する必要がありますが、この機能を実装するための適切なアプローチが見つかりません。私は数日間それについて考えていました、そして、良い考えは来ませんでした。インターネットを検索してもインスピレーションは得られませんでした。

先に進む必要がありますが、何が最良かを知りたいです。

  • もっと考え、もっと待って、最良のアプローチを探し続けてください
  • 時間を無駄にするのをやめて、貧弱なデザインから始め、すべてをテストでカバーする

どう思いますか?前にも言ったように、私は自分のアプリケーションに取り組んでいます。期限はありませんが、できるだけ早くアプリのコーディングを終了したいと思います。



12
@gnat:これらの他の質問は、質問者が既にいくつかの機能をきれいに実装する方法を知っているが、「迅速で汚い」ために良いデザインを犠牲にしたい状況を扱っています。ただし、この質問は別の状況を説明します。開始するのに良い点が見つからない場合の一般的な問題解決に関するものなので、重複することはありません。
Doc Brown

注:アプリが成功した場合、「コーディングを終了」することは決してなく、機能は再設計されます。だから私は今できる限り最良の方法でそれを実装するつもりだ。
レン

回答:


41

別にそれについて人々に話してから(質問はあなたがプロジェクトで同僚を持っていない示唆して)、私は多くの場合、それを私は物事に集中する良い方法を見つけることができませんが。

通常、とにかく書く必要があるとわかっているコードの一部があります。まだ書き方がわからないものは、ダミーの結果を返すか、残りをテストするのに十分な近似値を使用するスタブに置き換えられます。

これにより、生産性が維持されます。そして、不足している部分を実装する必要があるときまでに、インターフェースは用意されています。そして、あなたは同じ問題領域で問題を取り巻く多くのコードを書きました。これは通常、アイデアを生成するのに役立ちます。 。また、多くの場合、欠落している部分は最初に考えたほど包括的である必要はないという結論に達します。


6
最もリスクが低く、最も理解されていないコードを最後に記述することのマイナス面は、問題を解決できないこと、またはプログラムのアーキテクチャに大幅な変更を加えた場合にのみ解決できることがわかり、多大な労力が費やされることです。
リッチスミス

1
このアプローチのもう1つの欠点は、「問題Xを解決できます。残っているのはYを実行することだけです」ということです。現実には、Yは現実的ではありませんし、真の解決策はZであるとき
ブライアン

@RichSmith、ブライアン:それは起こります。これにより、欠落している部分がなぜそれほど難しいのかをよりよく理解できるようになり、見積もりが改善されます。そして、私は投機的でdivision意的な責任分担に基づいて数週間の仕事をすることを提案しません。
jdv-ヤンデヴァン

しかし、それらが欠点であるかどうかは議論の余地があります。問題をまったく調査せずに時間を費やす方が良かったでしょうか?または、何が機能するかを推測して座っているのですか?素早いプロトタイプを書いて、いろいろ試して、早く失敗するのは良い習慣だと思います。それは確実に知って、将来の同様の状況で経験を積むための唯一の方法です
サラ

14

検索が失敗した場合は、常に最初の(必ずしも最良ではない)アイデアを使用して実装し、後で適切なアプローチが見つかったらリファクタリングできます。

これは正しい方法です。良いアイデアのように見えるものを見つけたとしても、後で悪い結果になる可能性があるためです。または、その時点では良いかもしれませんが、後でもっと良いものを見つけます。その後、リファクタリングする必要があります。

これを行うときは、リファクタリングしやすい方法で設計および実装してください。適切に行うと、問題のある部分のみを変更する必要があり、最初から開始する必要はありません。


1
この投稿では想定されているようですが、リファクタリングが容易な方法でコードを書くことが非常に重要であることを付け加えたいと思います。
c_maker

@c_makerはい、もちろんです。それ以外の場合は、後ですべてを最初から書き直しても意味がありません。答えに追加します。感謝
BЈовић

10

他の人に尋ねるのはどうですか?たとえば、ここで問題を説明したり、実装の問題である場合はstackoverflow.comでアイデアを求めたりできます。良い答えが得られない場合でも、問題を書き始めると、すでに役立つことがあります。


それが問題だユーザーインターフェイスをだ場合は、もありますux.stackexchange.com
ロブ・教会

SOで尋ねると、回答はCreative Commonsの下で著作権で保護され、プロジェクトによってはそのコードが使用できなくなる可能性があります。
smcg

2
アドバイスは著作権で保護されますか?確かに著者は、コピー/貼り付けではなく、チュートリアルとして使用しますか?
グリズワコ

@smcg:トピックはここで議論されました:meta.stackexchange.com/questions/12527/…-しかし、正直に言って、それが本当に問題になっているのなら、GrizzLyが提案した方法でこれを回避できると思います。
Doc Brown

@DocBrown IANALですので、それが持続するかどうかは確かに言えませんが、時には注意を怠っては良いことです。
smcg

2

いくつかのアイデア:

  • ブレインストーミング
    あなたが持っているすべての愚かなアイデアを(紙またはホワイトボードに)書いてください。確実に機能しないものを削除します。書き続ける。潜在的に関連する実世界の問題の解決策を含めます。たとえば、塗料を混ぜたり、壁に釘を置いたり、オイルを交換したりすることで、現実世界の笑顔が解決しますか?
  • Googleに助けを
    求める、ここに尋ねる、オタクの友達に尋ねるなど。
  • 関連する問題を
    解決する問題を解決することはできませんが、もっと簡単な問題を解決できますか?または、同様に複雑な関連するものですか?それを行う。次に、小さな個別の変更を行って、ソリューションを目的のソリューションに近づけます。

  • インターフェースがWebサービス、Webページ、ネイティブフォーム、カメラ、キーボード、モニターなど、何であれ外部から書き込みを開始するだけで、インターフェースがあります。インターフェースを機能させるために、数行のコード/擬似コードを記述します。まだ存在しない魔法のメソッドを使用してください。存在しない各魔法のメソッドに対して同じことを再帰的に行います。後で最適化します。

2

悪い解決策を採用しても何も問題はありません。多くの場合、その時点で問題の領域について十分に知らないだけです。悪い解決策を講じることで、先に進み、問題についてさらに学びましょう。その後、戻って最初のソリューションをリファクタリングできます。


1

私は常にエンドユーザーの観点から見てみます。「クール」なアイデアは、何年もかけて作業できるデベロッパーだと考えるのは簡単です。実際、アプリにはほとんど追加されません。

理想的には、アプリ内のすべての機能をマッピングし、エンドユーザーへのメリットに応じて優先順位を付けたいと考えています。個人的にはMOSCoWを使用しますが、優先順位付けの方法を同じように保つ限り、1 -5。

その後、この機能がアプリの重要な部分であることがまだわかっている場合は、すでに言われているように、質問してください!私は、同僚やStackoverflowのすばらしい人々によって最終的に解決されていない問題に遭遇したことはないと思います。


私はモスクワ出身ですから:)
user21974

そこにサインがあります!
Mrk Fldig

1

私の意見は次のとおりです。ただ機能するコードを書かないでください!将来的にリファクタリングすることは非常に難しいはずです。

開発者(そしてもちろんPMや上司)にとって、これは本当に一般的なアプローチです。私は多くの時間を「ただ動作させる」または「後で修正します」と聞きましたが(後で決してしない!)、品質はプロジェクトの途中で得ることができないものではないと思います。

私の提案は、しばらくの間あなたの問題を考えるのをやめることです。...何か他のことをしてください。

ところで、同僚に尋ねることは、あなたの問題を解決する絶対に素晴らしい方法です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.