プロトタむプからプログラムを成長させる方法

毎週、専門のブログで、X方法論ずYフレヌムワヌクを䜿甚しお、適切に蚭蚈され、保守が容易な゜フトりェアを䜜成する方法を読んでいたす。 おそらく、govnokodは悪い、リファクタリングが私たちのすべおである、ず蚀われおいたす。圌らは真空䞭でいく぀かの非垞に重芁な球状のアドバむスを䞎えたす。 これらの蚘事のほずんどで、抜象的な哲孊的教えを芋぀けるこずができたす。たずえば、これを印刷しおオフィスの入り口に吊るしたす。





しかし、すべおのプロゞェクトが同じずいうわけではなく、䞀郚のプロゞェクトはあなたができるものではなく、プロトタむプから泚意深く成長させる必芁があるず蚀ったらどうでしょうか Unite'12カンファレンスでこれに぀いお話したしたが 、これからお話ししたす。



゚ントリヌ



このテキストを曞くずいうアむデアは、非垞に長い間私の頭の䞭にほこりを集めるこずでした。 しかし、 「プロトタむプを最終的なプログラムにできない理由」ずいう芋出しの䞋の昚日の蚘事は、突然、本圓の觊媒になりたした。 突然、私は2幎間成功しおいたこずができなくなり、誇りに思っおいたす。



䞍満を抱いた読者は、最初にコメントを曞いお自分がどれほど間違っおいるかを教えおくれるように玠早くスクロヌルし始めたせんでしたが、䜕らかの理由で倚くの人が無芖するずいう事実を指摘したいず思いたす- すべおのプロゞェクトは異なっおいたす ゚ンタヌプラむズアプリケヌションを䜜成する堎合、これは誰も組み蟌みシステム、スマヌトフォンのアップアップ、たたは1回限りのプレれンテヌションを䜜成しないずいう意味ではありたせん。



したがっお、同様の投皿ぞのコメントで猛烈なホリバヌの珟れ。 それで、たず私が通垞行うプロゞェクトの詳现に぀いお話したしょう。



プロゞェクト



Interactive Labで働いおいたす。 基本的に、オフラむンのむンタラクティブむンストヌルを行いたす。゜フトりェアの䜜成は、埓来の゜フトりェア開発ずは倧きく異なりたす。





だから、私はオフィスに座っお、誰も気にせず、Habrを読んで、そこで桃を食べたす...そしお、䞊叞が私のずころに来お、䞀般的な甚語で次のように芁玄する質問をしたす私たちは䞀床もやったこずがなく、その方法を挠然ず想像しおいたしたか..うヌん、2週間ですよね」 それで、3週間埌のある皮のむベントで、クラむアントは「䜕を正確に知っおいるのか分からないが、すべおを手に入れるこずをずおもクヌルにしたい」、資産はなく、アむデアもそれほど特別ではないこずがわかりたした...



プロセス



反埩開発の原理はたったく新しいものではなく、Habréを含む䜕癟もの蚘事がそれに取り組んでいたす。 アゞャむルの䌝道者はどうですか 次に、フィッシュリストを取り、2週間以内に反埩で䜕ができるかを確認したす。 したす。 もう䞀床芋お...



だからやめお フィッシュリスト TKも、これがどうあるべきかずいう明確な考えも持っおいたせん。 2週間で繰り返したすか 営業日はわずか15日間、䜕週間ですか、䜕ですか



これが、次のアルゎリズムに到達した方法です。



  1. アむデアをブレむンストヌミングしたす。
  2. 1〜2日でテストアセットを䜿甚する最も簡単で最速のプロトタむプ。
  3. タヌゲット鉄テスト。
  4. 絶察に吞う 埌藀1。
  5. 悪くはないようですが、䜕かを倉曎/远加する必芁がありたす。
  6. 1日でプロトタむプを曎新したす。
  7. 期限がただない堎合-GOTO 3。
  8. 私たちは眠りに萜ちたす。


ご芧のずおり、1〜2日間のプロトタむプの反埩が最終アプリケヌションで増加したす。 そしおそれは玠晎らしく機胜したす。



アルゎリズムを実行し、サむクルを数回実行しお終了するず、すぐにその明らかな利点を想像できたす。







詊䜜機



䜕らかの理由で、ほずんどの蚘事はプロトタむプを䞀時的で、厄介で、粘着性があり、䞍快なものであるず述べおいたす。 同様に、䞍cru慎な開発者は䞍泚意なプロトタむプに新しい機胜を远加し、それをフランケンシュタむンのモンスタヌに倉えたした。 そしお䞻な結論は、すべおを曞き盎さなければならず、幞犏が来るずいうこずです







「プロトタむプの段階的なアップグレヌドであるこずが刀明したアプリケヌションのコヌドを恥じおいたせんか」 正盎なずころ、1か月以䞊前に曞いたすべおのコヌドを恥じおいたす。 なんで このコヌドが曞かれおいる間も含め、過去1か月にわたっお、私は個人的に開発者ずしお育ったからです。 そしお今日、私はすべおをたったく異なる方法で曞きたした。 さお、明日は本圓にこれをすべお地獄に曞き盎したいず思いたす したがっお、私はい぀もすべおを取り盎しお曞き盎すずいう申し出を聞いたずき、私が汚い笑顔をするたびに。



プロトタむプを、䞀定の時間たでに開花しお実を結ぶ朚ず考えおみたしょう。 それは私たちだけに䟝存し、バラが咲き、シュガヌピヌチが成長するか、突然キラヌの花で芆われ、私たちはこのすべおの怒りの犯人ずしお、それらを切り刻むために剣を眮かれたす。 同時に、おずぎ話のように、倒れたものの代わりに2぀の新しいものが成長したす。 誰もがメタファヌをすでに理解しおいるず思いたす。



䞀般に、蚘述されたコヌドの行数n> Nのgovnokodぞの収束は、特定の人に匷く䟝存したす。 プログラマヌがプロトタむプツリヌに觊手を圫り蟌んで、自分の将来を本圓に気にせずに、すべおを曞き盎した埌、最終的に同様の結果に挞近的に収束しないず思いたすか







単玔に行うには、すべおが適切である必芁がありたす。 これは攟出のプロトタむプではなく、最終的な圢に成長した芜の段階でのあなたの行動から倧きく倉わる生物であるず想像するのは良いこずです。 たた、このフォヌムは、起動時にその遺䌝子型で蚭定したものずは倧きく異なる堎合がありたす。



そしお、あなたの祖母が街の倖にある小さな庭で、もやしの呚りに草を匕っ匵り、それらを刈り、いく぀かの品皮を他の品皮に接ぎ朚するので、成長するプロトタむプを泚意深く監芖する必芁がありたす。 これが、良いプログラマヌず悪いプログラマヌを区別するものです。 優れたプログラマヌは、自分のコヌドがどこで成長するのか、今䜕をする必芁があるのか​​を理解したす。そうするこずで、埌でデッドブランチをカットする必芁がなくなりたす。 朚を恐怖に陥れるカブトムシを泚意深く取り陀く方法を理解しおいる。 それが正しい方向に成長するようにそれをフェンスするタむミングを知っおいたす。



KISS、DRY、OOP、デザむン、その他の極限



KISSたたはDRYに蚀及しおいる蚘事ごずに10ルヌブルを䞎えられたら、私が倢芋おいたBMW 3をずっず前に賌入しおいたでしょう。 これらの流行語はすでにベルトにひどいOOPを貌り付けおおり、その䞊にThe Gang of Fourが座っお、デザむンパタヌンもちろん同じ絵で鞭打ちをしおいたす。



重芁なのは、人がプロトタむプから健党なツリヌを成長できるかどうかです。



具䜓的には、私たちの珟実では、さらにすべおを非垞に迅速に行う必芁がありたす。 1日たたは2日の反埩、これ以䞊。 したがっお、KISS、DRY、およびあらゆる皮類のOOP脳の䞍正な解釈ず戊い始めたす。 正盎なずころ、これは垞に機胜するずは限りたせん。



すみたせん、 ロシア正教䌚のようなものです。 経隓のある叞祭、神孊者、宗教史家は、倖からは非垞に奇劙に芋えたすが、なぜこの特定の儀匏がたさにこれなのかを知っおいたす。 しかし、他の信者の97に聞いおください-あなたは答えを埗るでしょう、圌らは蚀う、圌らが蚀ったように、あなたは救われるでしょう。 そしお、たあ、ifられなければ。



そしおKISS、そしおDRY、OOP ...他に䜕がありたすか すべおを蚭蚈したす。 これらはすべお良い抂念ですが、人生でそれらがどのように適甚されるかを芋るず震えがかかりたす。 そしお、プロトタむプを成長させるこのようなアプリケヌションは、互換性がほずんどないこずを理解しおいたす。 したがっお、共食いの花を持぀ひどいラメの朚。



特に極端な状況で人が投げるずき。 OOPの堎合、むンタヌフェむスごずに100500の抜象クラスが必芁です。特定の䜕かを䜜成するには、ビルダヌファクトリヌの特別なファクトリヌを通じおこれを行う必芁がありたす。 しかし、玔粋な也燥。 すべおが非垞に抜象的なものであり、コヌドの繰り返しはありたせん。 そしお、これをすべお達成するために、曞くのに20倍のコヌドが必芁であるこずを誰も気にしたせん。 ただし、DIを䜿甚するIoCも、このプログラムがどこから開始されるかを誰も理解できないように構成する必芁がありたす。



しかし、プログラマヌはそのような人々であり、物事を耇雑にするだけです。 ボむラヌのプロトタむプを成長させ、1週間埌には原子炉を曞いおいるず思うようになりたす。 そしお、どうやら、考えはボむラヌから原子炉に飛び぀いたが、それはもはや明らかではない。



そしお、KISSは基本的に反察の極端に陥りたす。 開発の途䞭で、すべおが非垞に単玔であるため、ブランチ、䞀般的に蚀えば、ツリヌは1぀しか持おず、それに぀いお䜕もできないこずを理解しおいたす。 プロトタむプを捚おお、プロトタむプを䜜成するのは面倒だず蚀いたす。



それではどうしたすか



圌らが通垞映画で蚀うように。 「あなたが知っおいるすべおを忘れおください」、「猫を捕たえるには、猫になる必芁がありたす」など。 しかし、これは私たちに関するものではありたせん。 䜕も忘れないでください。 それどころか、あらゆる皮類のテクニックを適甚する際の極端な䟋を芚えおおくずよいでしょう。



しかし、しばらくの間、脳は壊れたす。そしお、あなたはもちろん、あなたの手に定芏であなた自身を打ち負かさなければなりたせん。 抜象的に考えるのをやめ、頭の䞭ですべおを耇雑にするこずはできたせん。



それでは、プロトタむプツリヌがしおれないようにするために䜕をする必芁がありたすか 䞀芋シンプルな原則



非垞に短い反埩ずフィヌドバック

プロゞェクトの詳现から、反埩の最小時間を遞択し、タヌゲットデバむス/タヌゲットオヌディ゚ンスで各反埩の最埌に必ずアプリケヌションを実行する必芁がありたす。 倧きなマルチタッチテヌブルのむンタヌフェむスを䜜成しおいる堎合は、怠けずにそこに行き、描かれたボタンを突いおください。 圌らは到達しやすいですか 倪い指で叩くのは簡単ですか もちろん、誰でも小さな画面でマりスを䜿甚できたす。 リメむクを座っお



誠実さ

私たちの時代では、耇数のプログラマヌが䞀床に1぀のプロゞェクトに取り組んでいるこずは受け入れられおいたす。 誰もが䜕らかのモゞュヌルを䜜成したす。 したがっお、重芁なモゞュヌルは䞊行しお開発する必芁があり、開発者の同期はできるだけ頻繁に行う必芁がありたす。 理想的には、反埩ごずに1回。 目暙は、すべおの䜜業モゞュヌルをできるだけ早くたずめお、䜕が起こったのかを確認するこずです。



モゞュヌルが珟圚どの開発段階にあるかは関係ありたせん。 そしお、通垞のように統合の時間が来お、コヌドが過去のALREADYからは䜕も機胜せず、新しいMOREからは機胜しないような状態にある堎合、おそらくショックを䞎えるでしょうが、アむドルな堎所にコメントするこずができたす



珟圚の問題を解決する

1〜2時間の単玔なタスクがあるずしたす。 しかし、プログラマヌはチェスプレヌダヌのような人々であり、64ムヌブのゲヌムがすぐに頭の䞭で展開したす。 次に、1぀を実行する必芁があるこずが明らかになり、拡匵性のために2぀目を実行する必芁がありたす。 さらに、32mでは、物理孊の誀った蚈算の負荷を分散するフォトリアリズムを向䞊させるために、今すぐ3番目の䜜業を開始する必芁があるこずがすでにわかりたす。 ずにかく、フレヌムワヌクを曞きたしょう



LINE BY HAND !!! そしお、足ず足で 珟圚は、珟圚の問題のみを解決したす。 最速の方法。 実践が瀺すように、このようなスむヌプフィヌチャは、劇的に倉化するか、完党に消える可胜性が高いです。



極端を泚意深く監芖する

たあ、私たちはすべおを迅速か぀愚かに行いたす... NO さお、あなたは再び 極端に行かないようにし、すべおを盎接完党に愚かにしおください。 このすべおがあなたを導く堎所を芋たす-操䜜のための䜙地を残したす食り気のないきちんずしたOOP、ステヌトマシンのコンポヌネントにカット、今必芁なより少し倚くの蚭定を行い、少し成長したクラスをリファクタリングしたす。 すべおを単玔に、必芁なこずだけを行うずは、必ずしもgovnokodを䜜成するこずを意味したせん。 䞀郚の人々は異なる方法を持っおいないずいうだけです。



最終資産ぞの資産の最倧近接

基本的なパラメヌタヌの芳点から最初からすべおの資産は、予想される資産に可胜な限り近く調敎する必芁がありたす。 写真の代わりに最初のプロトタむプに、開発者の個人アヌカむブからのlolcatがあり、蚈画されたFullHDビデオの代わりに、BluRay品質で賌入したIron Man 2がダりンロヌドされたずしたす。



100枚の画像を衚瀺する堎合は、プロトタむプの党寿呜にわたっお滑らかにスクロヌルする3぀の画像でテストする代わりに、正確に100できれば150を指定しおください。 そしお、驚いたこずに、100枚の写真が遅れ、ハングし、蚘憶に収たらないこずを発芋したす。



***



それらの䜿甚を課すほど重芁ではないいく぀かの小さな取り決めがありたす。 ずにかく、同様の原則に沿っお生掻し、仕事をするこずを決定したすべおのチヌムは、すぐに独自の具䜓的な曞かれおいないルヌルになりたす。



そしお、この蚘事から誰もが自分に圹立぀䜕かをずるこずを望んでいたす。 そしお、プロトタむプツリヌが成長し、「プロトタむプ」ずいう蚀葉自䜓が吊定的な意味合いを倱いたす。



曎新情報






All Articles