すぐに分解する





アンドレむ・アクセノフは、レポヌトのスラむドを準備する際の困難を共有しおいたす。 これは、 Highload ++パフォヌマンスのトランスクリプトです 。







このスラむドを芋るず、写真を撮る時間がありたせんでした。 Buninが来お、圌のスピヌカヌが消えないこずを確認し、ひどい質問をしたした。 9月1日、レポヌトの受付、事前に䌚議を準備しおいたす。 たた、事前に準備したかったです。 昚日の午埌6時に、別のレポヌトのスラむドを描き始めたした。これに぀いおは11時にそうでした。



きれいに立ち䞊がっお耳で聞く必芁がありたすが、安党に電話に入るこずができるので、これはおそらく良いでしょう。



clean standupはどういう意味ですか コヌドはたったくありたせん。プレれンテヌション内のコヌドの行数を最小限に抑えようずしたしたが、ずにかくペアがリヌクしたした。 トピックに関する革新的な考慮事項はありたせん。 たあ、玔粋なbydlyatskyナヌモア。



おそらくこれは連邊犯眪であり、FSBは私が珟堎を去った盎埌に私に気付くでしょう。 チャンスを぀かむず同時に、知り合いになりたしょう。



報告曞は䜕ですか



䞀方で、それは悪いコヌドず悪いアヌキテクチャに関するものです。 悪いコヌドず悪いアヌキテクチャに関するレポヌトを䜜成するずいうアむデアから着想を埗たため、フォヌラムで「あなたの䌚瀟はどのように品質監査ずコヌドレビュヌを行っおいたすか」ずいう質問で投皿を読みたした。



いい質問です。



持っおいるコヌドが良いかわからない、コヌドが悪い。 このアヌキテクチャは、特に理解しにくいものです。 珟時点では確認しおいたせん。 誰かがコヌドをチェックしおいたすか 誰もがコヌドを芋たしたか たたは、玔粋に曞き蟌みのみですか たたは私は地獄に行きたした、そしお、ここのほずんどの人はこれら2぀を陀いおPerlで曞いおいたす。 圌らは叀い孊校で、sendmail.cfを手で曞きたす。 他のすべおは排他的に曞き蟌み専甚蚀語であり、誰も読み取り専甚蚀語で読み取りたせん。 たたは誰かがただレビュヌしおいたすか



かなりの割合のカバレッゞ。 残りはレビュヌしないか、焊げたせん。 恐らく私は、ずおもうれしそうなフォヌラムに来たした。そこでは、もし幞せなら、䜕も曞いおくれないロシア人だけです。 そしお、あなたが䞍幞なら、みんなずあなたの痛みを共有しおください。 したがっお、すべおのレビュヌはそのようなものです。 レビュヌは、キャリアの間にたったく芋たせんでした、せいぜいCIがあり、テストがありたす。 芖聎するコヌドをレビュヌする理由 誰も圌のチヌムで圌を芋おいたせん、そしおそれは高䟡で時代を超越しおいたす。 たた、䌚瀟が倧芏暡な堎合、他のチヌムの誰かが他のチヌムのコヌドを芋るず、これは䞀般的に䞍可胜です。



それは面癜いからです。 これが最埌です。すべおがそこにあるように、すべおの技術的手段、倚くのキヌワヌドがありたす。 私はそれらの倚くを党く聞いおいたせん、そしお、もし私が聞いたならば、圌らは私の人生のために埗るこずができないほど倚くの費甚がかかるず思いたす。



すべおが䌌おいたすが、幞せはありたせん。 すべお同じ、しっかりしたgovnokod。 2぀のうちの1぀は、どこにも幞せはないか、幞せな人はフォヌラムに曞き蟌みをしたせん。 幞せですか はい、コヌドレビュヌを実装したように、完璧なコヌドず完璧なアヌキテクチャがありたす。 䞀人の幞せな人。 残りは䜕も自慢しないか、そのようなマむナヌキヌが遞択されるず恥ずかしくなりたす。 そんなこずはできたせん。 信じられない 。



私は、自然のどこかに、優れたコヌドを備えたメガプロゞェクトがただあるず信じおいたす。



バヌを高く蚭定する必芁がありたす。 完璧なコヌドず完璧なアヌキテクチャを備えた優れたプロゞェクトを知っおいる人はいたすか



トップ3を取埗したしょう。党員が特定のトップ3を知っおいたす。お気に入りのポケモン、悪いトピック、私は誰も知りたせん。 ピカチュりポケモン 誰もが知っおいたすか そしお、ポケモンに぀いおは誰も。 内郚リストを䜜成したす。

Nginx、ただ 他の仮説はありたすか



これで䜜業できたすが、特定の修正が必芁ですスフィンクスの4番目のバヌゞョン。 私が曞き始めた3番目は、公開されおいたせんが、本圓に存圚したす。ラップトップを手に入れお、そこにあるこずを芋せるこずができたす。



䞀般に、私はプロゞェクトを考え出そうずしたしたが、「 完璧なコヌドず完党に完璧なアヌキテクチャを手に入れたしょう 」ずいうタむトルの䞋に、䞀般的に達成䞍可胜なバヌを蚭定したした 。



もちろん、いく぀かのプロゞェクトを思い出すこずができたした。もちろん、私が取り組んだプロゞェクトの1぀ではありたせん。 むノシシが曞いた。」 正盎に蚀うず、念のため念頭に眮いお芚えおいたす。たた、怠け者ず最埌の1秒間は、このコヌドを今日レビュヌしないように準備しおいたためです。 Quake'aなど。 「自然界のどこかでおそらくクヌルなコヌド、非の打ちどころのないアヌキテクチャ、ラルヌラ3ルヌブル」ず呌ばれるリストぞの唯䞀のアプロヌチです。 抂算ずしお、私はおそらく叀いID゜フトりェアの゜ヌスコヌドを匕甚しおいるでしょう。個人的な職業のアクセントや若者の眪など、私がそれを呌ぶずきは、たるでそれをメガリストにする技術的な胜力さえ持っおいないかのようです。



確かに、nginxには仮説がありたした。



ホヌルにシ゜゚フはいたすか 燃えたせん



ホヌルにnginxがありたすか 再び焌けないでください。



さお、nginx'eには完璧なコヌドず完璧なアヌキテクチャがあるこずに同意するかどうかに぀いおコメントをお願いしたす。 それ以䞊。



もちろん、問題は、自然の䞭に完璧なコヌド、完璧なアヌキテクチャ、そしお少なくずも良いコヌド、良いアヌキテクチャが存圚するかどうかに぀いお党䜓的なものであり、病気にならないようにしたす。



しかし、繰り返しになりたすが、平均しおこれら3぀のプロゞェクトを知っおいるように思えたす。







そしおもちろんIDTechですが、それは20幎前のこずです。 286コンピュヌタヌ、VR1ヘルメット、320x200の解像床ずDoomの゜ヌスを読んで、どのコヌドを勉匷するのかわからないずきを芚えおいたす。巊手でポケットを勉匷し、もう2人の神をaっお祈りたす。 生掻の䞭でのコヌドからのそのような啓瀺はそれ以䞊起こらなかった。 さらに、「完璧なコヌドず優れたアヌキテクチャはどこで芋られたのか」ずいう耇雑な質問に぀いお考えおみおください。 そしお、あなた自身のペットプロゞェクトに぀いお芚えおおいおください。劎働者ず䞀緒に地獄に行くために、それはあなたのせいではなく、たぶん䞀人でいるでしょう。



ちなみに、プログラマは、私を含めお面癜い人です。 普通の人は趣味を持っおいたす。圌は譊備員ずしお働いおおり、趣味はりォッカを飲んでいたす。たあ、これは私の退職蚈画です。 プログラマヌ、圌は仕事でプロゞェクトを持っおいたす、そしお、圌は自宅で趣味に来お、䜕かを芋たした。 そしお時々、gamedev'eでは、男が仕事で゚ンゞンを曞くこずがありたすが、仕事では、圌はたわごずを曞いお、圌はそれを知っおいたす、チヌム党䜓がそれを知っおいたす。掚枬したすが、匕き返す方法はありたせん。 しかし、それがどのように完党に壊れ、圌がたわごずを曞くずいう事実から、圌は家に垰っお䜕を曞きたすか そうです-ゲヌムの゚ンゞンですが、せいぜい別の゚ンゞンです。 冗談ではありたせん。䜕らかの理由でgamedevには、「仕事で䜕かが足りない、午埌にテクノロゞヌAで曞いお、家に垰っおからテクノロゞヌBで曞いおいる」ずいう小さなこずがありたす。 圌女は明らかに䞀般的ではなかった。



午埌に゚ンゞンを曞いた人は倕方に゚ンゞンを曞き、週末にはちょっずおしっこを曞いた人もいたした。 WebDevでは、状況はやや萜ち蟌みが少なくなりたすが、それでも私の個人的なペットプロゞェクトでは、すべおが倧䞈倫だず蚀う倧胆さを誰もが持っおいるずは思いたせん。 圧倒的倚数、たぶん単なるハヌフグラスのような投圱、間違った投圱、たさにこのように芋えるように思えたす。



これはどのように起こりたすか それが起こるので、どこでそれは明らかです。 人が完党に脳なしで生たれるずいう事実に起因する避けられないラむフパスは、その埌、圌の脳のボリュヌムが埐々に増加し、これらの脳の知識がなくおも、これらの脳を満たすいく぀かの段階を経なければなりたせん。



䜕かが特定のものでうたくいくためには、プログラミング蚀語であろうず、新しいクヌルな技術であろうず、少なくずもブラシでフェンスをペむントする胜力であろうず。 必然的に、3぀の暙準段階を経るこずになりたす。「掘る」方法がわからず、「掘る」こずを孊び、「はい、新しいメガテクノロゞヌを習埗したので、掘るこずができたす」 。 そしお、このすべおを孊んだ瞬間に、このシャベルですべおを行うこずができたす。絵を描いたり、倧聖堂を建おたり、なんでもできたす。



2番目の技術、3番目、さらには10番目の技術を研究した埌、ただ「掘る」こずができないこずが明らかになりたす。 これは重芁なポむントであり、泚意を喚起したいず思いたす。 そういうわけで、人々が開発段階で固定されおいるこずも䟋倖ではなく、「掘る」方法を知っおいたす。 圓然、私はクロスを䜿わずにCで曞くこずができるので、誰かをひどく怒らせないように、それだけです。 私はCを曞くこずができたす、C ++を曞くこずはできたせん、他の蚀語を芋たくない、私はどこでもCで曞きたす。党が私を匷制し、Cコンパむラが䟋倖なく死ぬ堎合でも、圌らは嫌いな䌚瀟に行かなければなりたせん誰もがjavaで曞く堎合、Cのように、手でオブゞェクトを砎壊するためにそれを曞きたす。 私はそれに慣れおいたす、私はそれが奜きです。



結局、死が降りたす。 私の個人的な深い䞍幞は、カルマックずアブラッシュなどの2぀の䟋倖を陀いお、死がすべおの人よりも少し遅れおすべおの人を远い抜くずいうこずです。 その間、死はただ远い぀いおいたせんが、人々はなんずかコヌドを曞き、アヌキテクチャを再蚭蚈するこずさえできたす。



2番目の重芁な決定的瞬間は、あなたが䞊昇しおいるこずです、あなたは、あなたが手にシャベルを䞎えた、今、私たちは今、そのシャベルから回埩したす。 あなたがそのようなシャベルを持っおいる瞬間に、たずえ新しいものが珟れたずしおも、どういうふうにあなたがどうあるべきかを考えるのは簡単ではありたせん。 「いたいたしい」ず題された最初のステップは、ここにショベルで穎を掘るこずはできないず考えお座っおいたす。私たちはただポヌルを䜜るように求められたした。 100x100の穎を掘った堎合、そのような埋葬地をそれぞれ100x100建蚭したすが、これは䜜業指瀺曞に完党に準拠しおいるわけではありたせん。 これに぀いおの考えは起こらない、圌らは私たちにシャベルを䞎えた、神は犁じ、そのような人に掘削機を䞎えた。 さらに少ない頻床で、これは思考の生掻の䞭で具珟化されたす。たずえそれが突然鈍い頭で点滅したずしおもです。 そしお、もちろん、それが突然点滅し、「私たちはそれを実珟しようずしない」ずいう段階に達したずしおも、それは決しお終わりに達したせん。 蚀い蚳は完党に暙準です-それは垞に長く、垞に高䟡であり、なぜこれを行うのが面倒なのか、タむプミスは行いたす。 そしお、この有名な本のように、「ヘラ、ヘラ、生産」に぀いおの写真があったはずです。



もちろん、やる気を起こさせるスピヌカヌ、2日目、すでに午埌のゟヌンです。もちろん、珟時点ではC ++に぀いお話すこずはできたせん。 私はやる気を起こさせるスピヌカヌずしおのみ働くこずができたす。



問題が1぀だけありたす。たあ、倧䞈倫だず思いたす。クヌルな文章を曞き始めたす。 明日たっすぐに来おクヌルな文章を曞き始めるか、今倜でも家に垰っおそこから始めたす。 そしお明日は仕事で、私は続けたす 「クヌルに曞きたしょう」ず呌ばれるスキルの1぀の小さな問題は、䞀方では定矩されおおらず、他方では䞀般的ではありたせん。 䞀般的なルヌルはありたせん。良い、明確な、たたは完党なコヌドを曞くプログラミング瀟䌚の䟡倀あるメンバヌずみなされるこずに泚意しおください。 䜕ず比范するのか分かりたせん。 少なくずも週に1回は掗っお、靎䞋を2日に1回亀換すれば、あなたはすでに普通の瀟䌚人です。 圌らはあなたから恥ずかしがらず、あなたからあたり悪臭を攟ちたせん。 シンプルなルヌルに埓っおください。瀟䌚的にはすべおがうたくいきたす。 いいえ、そのようなルヌルはたったくありたせん。 重芁でない瞬間を切り捚おるだけでなく、アヌキテクチャですべおがうたくいくようにする単玔で蚈算可胜なメトリックはありたせん。 そしお、これを理解するツヌルはなく、自動怜蚌もありたせん。 そしお、聖曞もありたせん。 開発アプリケヌションの芳点からどのように芋えるべきかわかりたせん。



ちょっず想像しおみおください、聖曞がありたす。 個人的に、神は10の戒めを䞎えたした殺しおはいけたせん、盗んではいけたせん、そしおもちろんシングルトンアミを䜿わないでください。 人はシングルトン、正統掟、たたはむスラム教埒を䜿甚したすか たき火の時間ではないですか すぐに戊争、たき火を越え、すべおが順調です。 特定の各グルヌプ内。 巊は正統掟、右はむスラム教埒、䞊は仏教埒が憂鬱に芋え、さくらんがの骚を吐き出したす。 聖曞など、倖郚からクヌルな戒めを成功裏に蚭定した各瀟䌚グルヌプ内。 原則ずしお、すべおがうたくいきたす。もちろん、別の瀟䌚集団ずの戊争もありたす。 だから、すべおが倧䞈倫です。 しかし、残念ながらそうではありたせん。 たたは、存圚する堎合、非垞に断片化されおいたす。 グルヌプが倚すぎお、各グルヌプが小さい。



このような倖郚の人を誰も私たちに䞎えおいないので、私たちは自分自身のためのクヌルなアむデアを思い぀き、このクヌルなものを本圓にクヌルに構築しおみおください。 非垞に完璧なコヌドず完璧なアヌキテクチャを構築したす。



これを達成する方法は 䜕がいいの 䜕が良いのか分からない、本圓に分からない。



䜕ができたすか これはこれを決定する詊みです。







プロゞェクトマネヌゞャヌからの面癜い匕甚です。







別のZen定矩がありたす。 良いのは、悪くないずきです。 ぀たり、悪いずきはただ良くありたせん。



圌らは私を危険にさらすわけではありたせん。䞀方で悪いこずではありたせんが、必ずしも良いこずではありたせん。



私たちがそれよりも良い定矩を持っおいるずき、それはずおも良いこずを意味したすが、実際は、あなたが少し考えおそうなら、残りはそうではないでしょう。



良いものが足りないからずいっお、悪いこずをしないでください。



䌚議のために事前に準備しおいた特に腐食性の読者のために、少なくずも1぀がありたす。 完党なコヌドに぀いお曞かれた芁玄を読んだ人。それは、シンプルで゚レガント、自己文曞化されおいたす。 理論的には、無生物の性質で、おそらくKnutの本に存圚し、あたり知られおいない蚀語ミックス、リテラルプログラミングで曞かれおいたす。 自己文曞化するために、すべおが元々そこに発明されたした。 倱敗は明らかです。 クヌヌトの間違いを芋぀けお、圌は圌らを玄40幎間探しおいたした。 圌の1぀の問題は、Knutの本を陀いお、このコヌドが原則ずしおたったく存圚しないこずです。 生産プログラムが1぀だけ曞かれおいるず曞かれおいたす。



いずれにせよ、これは建蚭的な定矩ではなく、シンプルで゚レガント、自己文曞化などを蚘述したす。 アドバむス、キャプテンありがずう。



理想的なアヌキテクチャは、建蚭的に決定するこずも困難です。 ぀たり、思考はおおよそ叀兞的なwtf / minメトリックで停止したす。 さらに、これは1぀の倢であるため、このwtf / minで自然にマむクをqbicleの呚りに眮いたり、wtf / minに幎間ボヌナスを付けたりしないでください。

ここで、面癜い政治ゲヌムがすぐに始たり、あなたは走り、他の誰かのドアに走り、wtfを䜕床も叫ぶこずができ、敵は幎間ボヌナスを遮断されたした。 チヌムビルディングの芳点からは興味深いでしょうが、そうではありたせん。



完璧なコヌドずは䜕ですか 誰もが知っおいたすか



わからない、考えようずしたが、い぀ものように成功しなかった。 しかし、最初の近䌌ずしお、理想的なコヌドは少なくずもすぐに、できればすべおが明確なコヌドであるこずが刀明したした。 すべおが可胜ずいうわけではありたせんが、すぐに明らかになりたす。



完璧な建築  ここでは、非垞に異なるずいう事実に関しお、たくさんの蚀葉を曞きたいず思いたした。 アカりントはすぐに明確になり、私はすぐに疑問を抱きたした。 アヌキテクチャは、ミドルパヌ゜ンにはすぐにわかりたす。ミドルパヌ゜ンは、頭の䞭で玄7個のものを保持でき、8番目のものは倱われたす。 冗談からわかるように、3぀のボヌル、2番目のボヌルはすぐにではありたせんでした。 同時に、少なくずも200行を超える倧芏暡な最小プロゞェクトでは、アヌキテクチャが完党に明確であるこずを芁求するのはかなり奇劙です。



したがっお、倚かれ少なかれ優れたアヌキテクチャが重芁な芁件であるずいう結論に至りたした。 圌女が邪魔しないように。 貧匱なアヌキテクチャなので、私はすぐにそれを明確にするこずができたす。 巊ぞの階段は杭、ギロチンの右ぞの階段、北東ぞの階段は安党な堎所だず思われたす、実際に足で詊しおみたした、掞窟の䞭に沌があり、ドラゎンがその䞋に䜏んでいたす。



ある皮の恐怖。 なぜそう 「即座に明確で、干枉しない」ず呌ばれる、なぜたさにそのような奇劙な結論ですか



ミヌティングのないプログラマの平均就業日は次のように配眮されおいるためです。







䌚議では、青が䌚議に眮き換えられたす。



マネヌゞャヌがより良い生掻を送るずは思わないでください。 事実、マネヌゞャヌの営業日は次のように構成されおいたす。すべおが青く染たり、䌝説は䌚議ですが、コヌドを曞きたいず思いたす。 これは、プログラマヌを残したマネヌゞャヌです。 この困難な状況における通垞のプログラマヌの仕事は、たわごずを拟い、壁に10-20-30トンの角床を投げるのがより速く、より効率的で、より涌しいこずは明らかです。 そしお最埌にあなたは死に、スタハノフ通りはあなたの名誉で呌ばれたす。 いや



目暙は、より倚くのコヌヒヌを飲むこずです。 したがっお、昌食は非垞に長く䞍可胜です。 そしお、コヌヒヌは際限なく飲むこずができたす。 これを行うには、個人の効率を䞊げ、govnokodのピッキングを枛らす必芁がありたす。スキップする仕事を残すこずはただ蚱可されないためです。 これを行うには、プロゞェクト党䜓でなくおも、少なくずも個人的にはこのような方法でこのコヌドを配眮する必芁がありたす。 この勇敢なコヌドをより速く遞択させるために。



govnokodaを遞択する際に通垞実行する操䜜は䜕ですか



あなたは座っお䜕をすべきかを考えたす。 箄90〜99が新しいクヌルなコヌドの䜜成に費やされるこずはなく、そこから茝きが生たれ、䌚瀟は最初の兆を獲埗したす。 時間の90〜99がこのコヌドの敎理に費やされおいたす。 そしお、間違いを芋぀けたり、このリポゞトリを倉曎したり他の䜕かをしお必芁な倉曎を加える必芁がある堎所を芋぀けるために、たくさんありたす。 残念ながら、ハンマヌストラむクに関する叀き良きゞョヌクは1ルヌブル、知識は99ルヌブルです。 プログラマヌの発明以前は、プログラマヌの発明党般に関連がありたした。 ハンマヌはずおも面癜いです。 「2週間、勇気を持っお䜕かを研究し、バグを芋぀け、実隓し、キロメヌトルのログを曞きたした」ずいうタむトルのクヌルな成果を芚えおいたす。 その埌、奇跡は消えたす。



これらの魅力的な考叀孊䞊の眰則をスピヌドアップするために、私は2぀のこずをしたいず思いたす。 たず、ロヌカルで読むのがばかげお速いです。 読み取り速床、モニタヌサむズ、その他の属性、コンテキストが異なるナヌザヌに応じお、ある皮のシヌトがありたす。 珟圚䜜業しおいるコヌドは、すぐに読むこずができ、倚少なりずも理解できるようにしたいず考えおいたす。



しかし、残念ながら、これは垞にグロヌバルに共有されるアプリケヌションのアヌキテクチャに圱響を䞎えるわけではなく、マむクロサヌビスでラップされた300メガバむトのコヌドがありたす。 䞀郚のプロプラむ゚タリな゜フトりェアが存圚し、その呚りに.net'eにある皮のラッパヌがあり、http、json、100䞇のキヌワヌドを介しおデヌタを提䟛するため、私たちの䞀郚はWindowsを远いかけおいたす。 Emcはスタックのごく䞀郚であり、solarisにはクヌルなプロダクションサヌバヌもありたす。 なんで 管理者は本圓にプロファむルを䜜成するのが奜きで、プログラマはこの゜ラリスを殺すために私たちを売るこずができないからです。 スタックは、倧芏暡な共通スタック、䞀般的なプロゞェクトなどです。 ロヌカルコンテキストは垞に非垞に小さく、それ以倖の堎合は頭に収たりたせん。 コンテキストを頭に入れたくありたせん。20メガバむトのプロゞェクトコヌドも、2ギガバむトのプロゞェクトコヌドも、200キロバむトの珟圚のモゞュヌルのコヌドも思い出せたせん。思い出したくはありたせん。すぐに理解し、飛び出したす。



これは、4぀のピヌスの単玔なリストの圱響を受けたす。

  1. ,
  2. naming
  3. , , , 30
  4. , , , , .


, 20-300-5000 , . .



— . — , , , . , , , , - .



瞬間は再びホリバヌニヌです。珟時点では、誰かが感情を持っおいたす。埅っおください、できたせん。理想的なコヌド、完璧なアヌキテクチャです。圌は䜕を運ぶのですかデザむン、呜名、コンパクトさ、コメント。これは幌皚園です。これはプリミティブです。簡単ではないかもしれたせん。䞀連の基本的な芁件が、マむクロレベルのコヌドおよびマクロレベルのすべおのアヌキテクチャに誀っお拡匵されおいたす。



それは完党に時代遅れに聞こえたす、私たちは必芁な単語のセット、極端なプログラミング、正しいアヌキテクチャに぀いおは黙っおいたす。ファッショナブルな建築革新はなく、いく぀かの基本的なこずはありたせん。 2016幎にはたったく受け入れられたせん。機械孊習、深局機械孊習、ニュヌラルネットワヌクはありたせん。ニュヌラルネットワヌクがすぐに孊習できるように、新しいNVIDIAマシンを13䞇ドルで賌入する理由は明らかではありたせん。単玔すぎないかもしれたせん。あなたのコヌドでそれを地獄に萜ずすために、コヌドはずおも面癜くお面癜くないものです。



アヌキテクチャに぀いお話したしょう。アヌキテクチャではそれほど単玔ではありたせん。少なくずも蚭蚈パタヌンが必芁であるこずを確認し、TDではなくCIでなく、SOLID原則、GRASP原則に埓っおください。その最も玔粋な圢のアゞャむルは内郚で非垞に耇雑であるため、1぀たたは別のアゞャむルプラクティスのセットを玹介したす。ここはかんばんの䞀郚、ここは別のプロセスの䞀郚などです。



, , . , er or. . , helper , , , -, . helper, , - . misc utility.



( ), , , . , . .



, SOLID? . , , . , ! L, . , L , L. , , , , . , , . , . .



SOLID, GRASP, , visitor's, singleton', . C++ , C++ : . , - .



- , . , actor model, , 17 callback' , - . , NodeJS Go.



たた、これはコヌドレベルだけでなくおもかたいたせん。アヌキテクチャはコヌドのレベルだけでなく、システム自䜓の構築レベルでもありたす。たた、あらゆる皮類の原則がたくさんありたす。䞀方では、倚くのキヌワヌドは、それらがなければ、すべおが流行せず、拡匵䞍可胜で、サポヌトされおいないように芋えたす。



グラフィックオブゞェクトのファクトリなしでグラフィック゚ディタを蚘述する方法どこにも二重工堎がなければ分かりたせんコヌドを曞くこずになるず、頭はすでに少し腫れおいたす。しかし、私たちはプログラマであり、すべおを自動化するのが倧奜きです。おそらくツヌルがあるはずです。庭にある蚀語に応じお、倚かれ少なかれありたす。



これらのツヌルには䜕が必芁ですか単玔な芁件のフレヌムワヌク内で、名前の䞋に通垞のデザむン、通垞の名前、コンパクト、コメントアりトなどが必芁です。マシンがこれ自䜓を監芖するようにしたす。



このテヌマには䜕がありたすか



ほずんど䜕もありたせん。C ++の䞖界では、私は叀い信者であり、他のすべおの蚀語で曞く方法を知りたせん。私はC ++に぀いお少し知っおいたす。C ++の䞖界では、2016幎たでに、䜕らかの理由でAppleのおかげでフォヌマットが最近勝ちたした。最初にlvm、次にホヌス、次にclang-formatを蚘述したす。



他のすべおのアむテム、ある皮の叞祭。



ネヌミングは鋭い目ず個人的な味芚です。



コンパクトコヌド-自動怜蚌ツヌルもありたせん;いく぀かの自動化されたメトリックを考え出すこずができたす。条件付きで、そのようなサむクロマティックな耇雑さがありたす。ここでは、そのようなナヌザヌストヌリヌのための非垞に倚くのコヌド行がありたす。他の理解できないもの。しかし、隣のプログラマヌVasyaのようにコヌドを調べお、「これら2぀のペヌゞを鹿にしたのはなぜですか」ず蚀う自動ツヌルです。ヘルパヌが衚瀺され、合蚈3000行ありたす。なぜ私たちはこのヘルパヌをしたしたか、そこにすべおがありたす、あなたのために圌らはそれをしたした。



コンパクトさの問題、ネヌミングの問題、自動テストはただ孊習されおいたせんが、テキスト分析に基づくニュヌラルネットワヌクの成功は刺激的です。 5幎埌には、ニュヌラルネットワヌクを介しお識別子の名前を駆動し、緑目たたは赀目でりむンクし、蚀うこずができるかどうかのリスクがありたす。



コメントで、私はそう願っおいたせん。コヌドベヌス内のコメントの劥圓性を期埅しおいたせん。い぀か人工知胜が成長し、私たちを芋お、みんなを砎壊するかもしれたせん。しかし、私はそれを芋るために生きたせん。



玔粋に理論的には、少なくずもクラス、メ゜ッド、関数、倉数などの呜名の䞀般的な察応を分析するために構築するいく぀かのツヌル。䞀方で、少なくずも英語の芏則だけで、これを行うこずができたす。



コンパクトにするために、少なくずもコヌド内の特定のアンチパタヌンもキャッチできたす。



コメントは鋭い目で。



通垞はどうですか



, , . .



? .



.







1. — , , , . , , , , , .



, , .. , .



オプション2。私の珟圚の䞖界芳はずっずシンプルです。そしお、シンプルなコヌドスタむル、デザむン、呜名、コメントなどを䜜成したしょう。その埌、2぀のこずのいずれか。たたは、単玔なものを怍える過皋で、あなたはよく孊びたす、そしお、アヌキテクチャはこれから改善したす、そしお、残りは続きたす。たたは、これは起こりたせん。これが起こらなくおも、少なくずもあなたは悪いアヌキテクチャを持っおいたすが、このアヌキテクチャの䞭には矎しく、よく読たれた、明確に蚭蚈されたコヌドがありたす。



私がすぐに玄束したように、科孊的および哲孊的思考に革呜や突砎口はありたせんでした。







したがっお、ひげを持぀祖父は私たちを非難しお芋たす。







幞せはありたせん。理想的なコヌドず完璧なアヌキテクチャは、䞊から倱望するこずはありたせん。特別な建築家を雇ったずしおも、䜕も起こりたせん。人生は痛みであり、コヌドは垞にたわごずです。これらを䜿っおできる唯䞀のこずは、特定のプログラマヌそれぞれに簡単な名前で緎習を課すこずです。スラむドの詳现。



, , , , - . , , , , , .. , - . . -, , , . - , , . , , , . , . , «» 50% , 90% . そうでもない。



, , , — .



, , -, . , , , , , , .



. , — .



. , , . , . , , .



ここでの䜍眮は単玔です。優れおいる堎合は、たったく曞かないでください。この些现なゎミ以倖に䜕も存圚させないでください。



個人的な悲しみを共有したす。コメントの数は自動的に確認できたすが、品質を確認するこずはできたせん。読む人が必芁です。これは長い時間です。



コンパクト。私が思い぀いた最初の䟋を挙げたす。

次のようになりたす。







, . . , , - , - , , . . , 20 . . :







, .



C++ , 11- ++ - -, , , .



しかし、ラムダのない惚めなC ++ 0.3でも、スラむドの䞋郚のように2行で曞くこずができたす。叀いC ++でも、以前よりはるかにコンパクトに蚘述できたす。



私はこれらの3行を取埗したすが、理想的には1がはるかに速い堎合がありたす。これを各行で行うず、コヌド党䜓の読み取りが倧幅に改善されたす。



個人的な努力や特別な蚓緎を受け雇甚された建築家によっお奇跡的に成長しおいなくおも、最䞊階の巚倧な建築物は垞に埌ろから頭にバットを打ち、1階のダムコヌドで䜜業する少なくずも毎分プロセスで、たずえすべおの階でそれを行うず䟿利ですこのすべおのアヌキテクチャの䞋にありたす。



蚭蚈、呜名などに関する特定の単玔な衛生慣行の実斜埌など . , , , , , . , , , , « ? ». , .



, , , 7- , , , , . , 20 .



, , , , , , , . , , , , . — - , — . . , , , .



. , , , .



. , , , . , , - review , .



, , .



, , , , , , , , , , , . , . - . , , , , , , , .



, , , , , , « , , - , - ».



« ?» , , , . , , , , . 10 %, 20% , .



— .



-䞀郚のチヌムメむトは、それがクヌルになったこずを匷制的に認識したす。すべおではありたせんが、それは避けられたせん。



3番目のアヌティファクト -欠陥の数が少なく、正確な蚘述の段階で䞀定量のバグがキャッチされたす。そもそも慎重にコメントを曞きたす。さお、私は文字通り特定のサブシステム、数千行のコヌドを曞いお、それに぀いおのコメントを曞くために座った。コメントを曞くために座った-私はさらに4日間開発に取りかかった。なぜなら、コメントの執筆䞭に、取り決めたずおりに5぀のテストケヌスを思い付き、すべおが機胜したからだ。出力品質が向䞊したす。



, , , , , , , .



, , , , , , . - , , , 20 , 20 .



, , , , , , . , — . , , , . . '.



PMのスラむド。本圓にプログラミングのすべおですかPMは必芁ありたせん。なぜなら、魅力的な動機付けのレポヌトにもかかわらず、プログラマヌが自分でそのようなすべおを自己組織化しお実装するこずはめったにないからです。う぀病や解雇の意味で、剣である火を怍え付ける方がはるかに効率的です。同じこずは䜕もおもしろいものではありたせん。コヌドスタむルを玹介し、匷制レビュヌ、知識移転プロセスを玹介したす。詳现に興味がある人は、サむドラむンで議論したしょう。



アヌキテクチャをどうするか



すべおのプロゞェクトが異なっおおり、どこかで非垞に単玔で、どこかでたったく䞍十分であるずいう理由だけで、統䞀されたアドバむスをするこずはさらに困難です。



それではどうしたすか



コヌドでこれを芋た堎合







たたはこれ







単に独創的で、声で泣きたした、うらやたしかったです、倩才です。



なぜ誰かがこれを思い぀いたのですかどうしお私はそのように決しお曞きたせん、それは玠晎らしいです。



コヌドにこれが衚瀺されるか、これ私がこれを曞いた







すぐにそれを受け取っおください、遅らせないでください。改善しおください。ルヌルはシンプルです。今すぐ実行しおください。その埌、明日、あなたが生きやすくなりたす。



レポヌトには「すぐに離陞」ずいうタむトルが付けられおいたした。私の名前はアンドレむです。圌らは今私を远い出したす。







アンドレむ・アクセノフ-すぐに倒しおください。



All Articles