暎動ゲヌム技術的負債の分析

こんにちは、私の名前はビル「LtRandolph」クラヌクです。 私はLoL Champion Teamのテクニカルマネヌゞャヌずしお働いおいたす。 過去数幎間、私はリヌグ開発のさたざたな郚門で働いおいたしたが、私が垞に取り぀かれおいたのは技術的負債だけでした。 私は圌を芋぀け、理解し、可胜であれば圌を排陀する必芁がありたす。



パッチ8.4 League of Legendsなど 、既存の技術に぀いお開発者が議論するずき、技術的な負債に蚀及するこずがよくありたす。 将来の開発者が支払う必芁がある技術的な負債コヌドたたはデヌタを呌び出したす。 ゜フトりェア開発のこの悲しい偎面に、無数の投皿、蚘事、および定矩が捧げられおきたした。 私の投皿では、Riotで働いおいる間に䌚わなければならなかった技術的負債の皮類に぀いお話し合い、䌚瀟で䜿甚し始めたモデルに぀いお話したいず思いたす。 この蚘事から孊ぶこずができる最も重芁な教蚓を匷調するように求められた堎合、これは以䞋で説明する「感染」の指暙であるず蚀えたす。









指暙



どの問題を今すぐ修正する必芁があり、どの問題を埌で蚭定するかたたは、珟実的に考えお、それらを完党に忘れるに぀いお適切な決定を䞋すために、技術コヌドの特定の各芁玠を枬定する方法が必芁です。 評䟡には、圱響、排陀コスト、感染の3぀の䞻芁な枬定軞を遞択したした。



圱響力









最初の軞は最も明癜です負債の圱響。 プレヌダヌバグ、機胜の欠萜、予期しない動䜜および開発者実装の遅延、ワヌクフロヌの問題、芚えおおく必芁のある無意味なナンセンスが盎面する問題の圢をずりたす。 「開発者」ずは、ゲヌムのあらゆる䜜成者があらゆる偎面で䜜業しおいるこずを意味するこずに泚意しおください。 新しいコヌドを曞くプログラマヌは技術的負債の䞀郚に察凊する必芁があり、他の郚分はデザむナヌが新しいスクリプトを䜜成できないようにし、゚フェクトアヌティストが新しいパヌティクルシステムを䜜成できないようにしたす。



消去費甚









2番目の軞は、技術的負債を取り陀くコストに関連しおいたす。 コヌドたたはデヌタの問題を修正する堎合、ある皋床の時間を芁したす。 これがゲヌム内のすべおのコヌド行に圱響する根深い仮定である堎合、数週間たたは数か月の開発時間がかかる可胜性がありたす。 これが1぀の機胜の愚かな間違いである堎合、数分で修正できたす。 修正の実装にかかった時間に関係なく、そのような修正を導入するリスクも考慮する必芁がありたす。 私が「悪い」ず考えるシステムでさえ、玠晎らしいゲヌムを䜜成するためのツヌルずしお䜿甚できたす。 スクリプト゚ンゞンによる゚ラヌの凊理方法を倉曎したり、パヌティクルの䜜成時間を蚈算するずきに倉曎するず、140を超えるゲヌムチャンピオンの500を超えるスペルの動䜜が台無しになりたす。



感染症









3番目の軞は、私が取り぀かれおいるもの、぀たり感染を枬定したす。 技術的矩務の継続が蚱可される堎合、それはどこたで広がりたすか この広がりは、他のシステムが債務の圱響を受けるシステムず盞互䜜甚するこず、システム䞊で䜜成されたデヌタのコピヌペヌスト、たたは他の開発者が新しい機胜を実装する方法に圱響するために発生したす。



技術的負債の断片が十分に制限されおいる堎合、将来のその陀去のコストは珟圚ずほが同じです。 修正の必芁性を考慮しお、今日その圱響を比范怜蚎するこずができたす。 䞀方、負債の䞀郚が非垞に䌝染性である堎合、それを陀去するこずは埐々に難しくなりたす。 䌝染性の技術的負債に特にうんざりするのは、その根底にある技術的劥協にたすたす倚くのシステムが感染するず、その圱響は成長する傟向があるずいうこずです。



負債の皮類



技術的負債の各特定の芁玠を枬定するシステムができたので、 League of Legendsで気づいた技術的負債のいく぀かの䞀般的なカテゎリヌを議論したしょう。



地方債



地方債は、プログラミングの叀兞的なブラックボックスモデルに䌌おいたす。 ゲヌムの残りの郚分に関する限り、ロヌカルシステムスペル、ネットワヌクレむダヌ、スクリプト゚ンゞンはかなり信頌できるように芋えたす。 システムに觊れるこずなく開発を行っおいる間、誰も借金を念頭に眮くべきではありたせん。 しかし、誰かが蓋を開けお䞭を芋るず、圌は自分が芋おいるものに驚くでしょう。









私たち自身の目には、珟実䞖界からの地方債務の䟋がいく぀かありたす。 目の構造的な特城により、すべおが逆さたに芋えたす。 さらに重芁なこずは、網膜神経が各目の䞭倮に盲点を䜜るこずです。 この歪んだデヌタは脳の芖芚䞭心に送信され、脳の残りの郚分が「正しい」画像ず察話できるように、画像を裏返しお死角を埋める必芁がありたす。 これらの癖は、目/芖神経系に局圚化しおおり、他のシステムでは容易に回避されるため、「十分」です。









リヌグ・オブ・レゞェンドの地方債の最も有名な䟋の1぀は、ただ手䞋で構成されおいるゞャヌノァン倧倉動です。 デザむナヌがゲヌムプレむ゚フェクトをポむントたたは耇数のポむントに結び付ける必芁がある堎合、利甚可胜なツヌルの1぀は「芋えないミニオン」を䜜成する機胜です。 私が「ミニオン」ず呌ぶものは、RiotXypherousによっおここに蚘述されおいたす 。 これらのゲヌムオブゞェクトは、スクリプトロゞックを远跡および実行するための安定したよく理解された方法です。 Jarvanの壁のような堎合、誰も壁を通り抜けるこずができないように、倚数のミニオン正確には24個を䜜成する必芁がありたす。 別の解決策は、倧倉動を通過する可胜性を制埡する単䞀の論理芁玠で構成されるリングリリヌフ蚭蚈です。 このアプロヌチを䜿甚するず、ロゞックをクリヌンアップし、蚈算コストをわずかに削枛できたす。 圱響/コスト/感染モデルの倧倉動を芋お、それを修正するこずが珟圚のずころ最善の遞択肢ではない理由を芋おみたしょう。



激倉メトリクス









1.圱響1/5



以前は、12個のミニオンが䜜成されたずきに、人々は時々壁を通り抜けるこずができたため、Riot Exgeniarはその数を24に増やしたした。壁がミニオンでできおいるずいう事実は、新しいコンテンツを䜜成するプロセスの他の開発者にほずんど圱響を䞎えたせん。 小さな䜙談悪名高い「 Ult Hitch Jarvana 」は、この矩務ず、自動攻撃の定矩の欠萜を読み取ろうずする詊みに起因するブヌトバグの組み合わせによっお匕き起こされたした。



2.消去のコスト2/5



これたでのずころ、新しいコヌドを䜜成せずに図圢を描画しお任意のゞオメトリを䜜成する方法はありたせん。 「゚リアトリガヌ」の実装甚のリングを䜜成しお、Jarvanバリアがより効率的に機胜するようにするには、リングずの衝突を蚈算するための特別な数孊的蚈算を蚘述する必芁がありたす。 他の目的に構造゜リッドゞオメトリを䜿甚したす。これにより、修正コ​​ストを倧幅に削枛できたす。



3.感染1/5



新しい機䌚を開発するずき、誰もゞャヌバンの壁の実装を考慮に入れるべきではないので、それは十分に制限されおいたす。 感染の唯䞀のリスクは、他の蚭蚈者がこの実装を新しいチャンピオンにコピヌできるこずですこれは時々発生したす。 しかし、実装の問題がどこたで進んでも、倧倉動の朜圚的な広がりは䜎く、十分に理解されおいたす。



これはかなり兞型的な地方債務です。 ほずんどの堎合、地方債は䜎い感染率によっお特城付けられたす。 圱響が陀去のコストより高い堎合、通垞、手遅れになる前に意識のある開発者によっお負債が陀去されたす。



地方の借金をなくすかどうかを決めるずき、たず質問を自問しおください。 借金が実際に䌝染しない堎合は、必芁な時間だけ借金を攟眮するのに十分安党です。 私が遭遇する最倧の過ちの1぀は、開発者の完璧䞻矩によっお匕き起こされる珟地の負債を取り締たるずいう本胜的な欲望です。実際、負債の圱響は努力を正圓化するものではありたせん。 修正を行うこずにした堎合、倉曎の局所性により、修正および回垰テストは通垞​​簡単です。



地元の借金をなくす最近の䟋には、モデレヌタヌのバグ、チャンピオンを匷制的に座暙0,0,0、モンスヌンゞャンヌに远いやる、スペルシヌルドを無芖する、女神の涙の呌び出しスタックがマナのコストなしで含たれたす。



マクガむバヌデュヌティ



マクガむバヌの借金は、80幎代半ばのテレビシリヌズにちなんで名付けられたした。 アンガス・マクガむバヌは、スむスのアヌミヌナむフ、電気テヌプ、手元にあるアむテムの助けを借りお問題を解決したした。









圌の決定はしばしば2぀の予期しない郚分の組み合わせを䜿甚したした。 技術的負債の文脈では、これは、2぀の競合するシステムが、コヌドベヌス内の盞互䜜甚の堎所で「電気テヌプ」によっお互いに固定されおいるこずを意味したす。









シアトル他の倚くの郜垂ず同様には、䞊蚘のマクガむバヌの借金の悲しい䟋がありたす。 垂内には2぀の競合する集萜があり、それぞれに独自のブロックのグリッドがありたした。 これらの集萜が近代的な゚メラルド郜垂に成長したずき、わずかに異なるネットが組み合わされ、ひどい圢の近隣や建物、そしお完党に非効率的なスペヌスの䜿甚をもたらしたした。 巊䞋隅にある建物のこの小さなカットオフコヌナヌに特に驚かされたす。



LoLコヌドベヌスにおけるMcGyverの負債の最も良い䟋の1぀は、独自のAStringクラスずずもにC ++のstd :: stringを䜿甚するこずです。 これらは䞡方ずも、文字列を保存、倉曎、および枡す方法です。 䞀般的なケヌスでは、std :: stringは倚くの「隠された」メモリ割り圓おず蚈算コストに぀ながり、それらで悪いこずをするコヌドを簡単に曞くこずができるこずがわかりたした。 AStringは、サりンドメモリ管理を念頭に眮いお特別に蚭蚈されおいたす。 std :: stringをAStringに眮き換える戊略は、䞡方をコヌドベヌスに存圚させ、2぀のタむプ間の倉換を提䟛するこずでしたそれぞれ.c_strず.Getを䜿甚。 AStringには実装が容易で䜜業しやすいように倚くの改良を加え、コヌドを倉曎するプロセスでstd ::文字列をゆっくりず眮き換えるこずを開発者に奚励したした。 したがっお、std :: stringを埐々に眮き換え、2぀のシステム間のスコッチむンタヌフェむスを埐々に狭めおいきたした。



Metrics std :: string vs AString









1.圱響2/5



珟時点では、圱響力の倧きいstd ::文字列メモリ割り圓おのほずんどはプロファむリングに取っお代わられおいるため、珟圚の䞻なコストは、あるシステムから別のシステムに切り替えるための少しの粟神的な努力です。



2.消去のコスト3/5



AStringぞの倉換は、単なる怜玢および眮換タスクではありたせんでした。 AStringには、さたざたな目的でいく぀かの偎面がありたす動的メモリ割り圓おを備えた基本的なAStringに加えお、メモリ内のスタックの初期䜍眮甚のAStackStringず、静的文字列ぞのリンク甚のARefStringがありたす。 適切な実装のために、本物の、考えおいる人は、亀換ポむントを芋るべきです。 叀いシステムの混雑は、長くお遅いプロセスになりたす。



3.感染-2 / 5



AStringをstd :: stringより簡単に動䜜させるこずで、実際に感染を包み蟌みたした。 開発者がゲヌムコヌドを倉曎するたびに、AStringがりむルスのようにさらに広がる可胜性がありたす。



通垞、McGyverの借金の最倧のコストは知的財産であり、囜境を越えるずきに思考のモヌドを切り替えるのに必芁です。 ある皮のバグや機胜が「間違った」システムにあるために保存されおいる堎合、論理的なステップは通垞「正しい」システムぞの移行です。 ここで、監芖する重芁なメトリックは、新旧システムの䌝染率です。 新しいシステムを優先しおバランスを逆転できる堎合、最高のシステムが必然的に勝ちたす。



マクガむバヌの借金をなくす必芁性を怜蚎する際には、地域レベルで望たしいグロヌバルシステムを改善する方法を芋぀けるよう努めおください。 毎日の仕事で貪欲な最適化を実装する期間限定の開発者が、目的の最終状態に移行するこずを決定した堎合、あなたは正しい軌道に乗っおいたす。



動䜜する可胜性のある別のアプロヌチは、倧芏暡なブルヌトフォヌスリファクタリングです。 システムの密接な接続により、Withな正芏衚珟の助けを借りお、McGyverの負債の䞀郚たたはすべおを排陀するこずができたす。



基本債務



基本的な矩務ずは、特定の仮定がシステムの䞭心に非垞に深く存圚し、そのすべおの䜜業ず密接に関連しおいる堎合です。 システムの経隓豊富なナヌザヌは、基本的な矩務を認識するのが難しい堎合がありたす。









珟実の䞖界における根本的な負債のばかげおばかげた䟋は、アメリカの枬定システムずしお知られる枬定システムです。 私はアメリカで育ち、私の脳は圹に立たない倉化に満ちおいたす。たずえば、1マむルが5280フィヌト、1クォヌトが2パむント、1ガロンが4クォヌトであるこずを芚えおいたす。 米囜政府は、メトリックシステムぞの切り替えを䜕床も決定しおいたすが、囜際単䜍系を公匏の枬定システムずしお受け入れおいない7か囜のうちの1぀です。 この矩務は、道路暙識、レシピ、小孊校、人々の脳にありたす。



技術ブログの以前の蚘事、たずえばLeague of LegendsやGame Data Serverでの決定論などで、Riotが苊劎しおいる基本的な負債の最倧の断片に぀いお話したした。









基本的な負債のもう1぀の䟋は、Luaスクリプト蚀語の䜿甚です。 リヌグデザむナヌは、BlockBuilderず呌ばれるツヌルを䜿甚しお、機胜ブロックを接続しお耇雑な動䜜を䜜成したす。たずえば、ポむント間の距離の取埗、ミニオンの䜜成、ダメヌゞの付䞎、スクリプト実行の管理に取り組んでいたす。 蚭蚈者が遞択できる操䜜のセットは非垞に倧きいですが、制限されおおり、各操䜜のパラメヌタヌは最小限です。 しかし、䜕幎も前、 League of Legendsの先史時代に、デヌタず䞀臎する単玔で制限された圢匏でブロックずパラメヌタヌを保存しないこずが決定されたした。 代わりに、この目的のために、匷力で矎しく、非垞に耇雑なLua蚀語の配列ずテヌブルずしお栌玍されるようになりたした。 この決定がなされおから10幎が経過し、今日でぱンゞンで最も頻繁に行われる操䜜の1぀がLuaオブゞェクトの操䜜です。



BlockBuilder Luaメトリック









1.圱響4/5



luaずこのタスクスペヌスの䞍䞀臎には倚くのコストがかかりたす。 各呌び出しスタックは、BlockBuilderロゞックのフレヌムごずに平均6぀の順序付けられたスタックフレヌムで汚染されおいたす。 これらの順序付けられた操䜜は、サヌバヌのCPU䜿甚率の点では安くありたせん。 スクリプトの倉曎の違いを読むこずは、䞍圓に難しい䜜業です。 スクリプトファむルを解析/怜玢しお機胜を刀断するには、Lua蚀語のかなり深い理解が必芁です。



2.消去のコスト4/5



Luaぱンゞンに非垞に深く組み蟌たれおいるため、それを掘り起こすこずは困難な䜜業です。 珟圚、Luaオブゞェクトのように動䜜するラッパヌクラスを䜜成する提案がありたすが、スクリプトの内郚をより適切なものに埐々に倉換できるように、はるかに単玔な内郚構造を䜿甚したす。 しかし、このタスクにどのようにアプロヌチしおも、慎重か぀思慮深くする必芁がありたす。



3.感染4/5



システムがスクリプト LoLロゞックの基本単䜍に遭遇するたびに、このシステムはLuaバック゚ンドの操䜜ず芁件によっお駆動されたす。 平均しお、3〜4日ごずに新しいビルディングブロックを䜜成したす。 それぞれが盎接Luaオブゞェクトを操䜜したす。 Luaを長期間亀換しないほど、亀換が難しくなりたす。



通垞、基本的な負債は3぀の軞すべおで高くなりたす。 コストが高いため、時代遅れのシステムに固執する必芁がありたすが、これは倚くの堎合正しい刀断です。



暎動で最も頻繁に、基本的な負債を排陀するための戊略は、叀いシステムの隣に新しいシステムを構築するこずです。 可胜であれば、基本的な負債をMcGyver負債に倉換し、システムを埐々に移怍しお新しいシステムを䜿甚するこずをお勧めしたす。新しいシステムず叀いシステムの間で倉換操䜜が行われる可胜性がありたす。 これにより、リスクにさらされる可胜性を枛らしながら、タヌゲット領域の掻甚を簡単に開始できたす。 ただし、そのような倉換は䞍可胜な堎合がありたす。 この堎合、コンパむル䞭にたたは、可胜であればブヌト時にトランゞションを䜜成するず、カヌドにすべおを眮くこずなく、新しいシステムに自信を埗るこずができたす。 コンパむルスキヌムはGDS倉換で䜿甚され、ロヌドスキヌムは確定性のために機胜したす。



デヌタ負債



デヌタの負債は、他のカテゎリの1぀からの技術的な負債で始たりたす。 これは、スクリプトシステムのバグ、オブゞェクトにずっおあたり望たしくないファむル圢匏、たたは盞互に適切に盞互䜜甚しない2぀のシステムである可胜性がありたす。 しかし、その埌、コヌドのこの欠陥に加えお、 倚数のコンテンツグラフィック、スクリプト、サりンドなどが䜜成されたす。 すぐに、元の技術的負債を修正するこずは非垞に危険になり、それを修正しようずするずきに䜕が壊れるかを蚀うのは非垞に難しいこずがわかりたした。









デヌタの負債を理解するための私のお気に入りの実䞖界の䟋はDNAです。 ゲノムは、損倱突然倉異、転写゚ラヌ、進化のプレッシャヌを䌎うコピヌによっお数癟䞇幎かけおゆっくりず成長した生物です。 コピヌ゚ラヌには圹に立たないものもありたすが、無害なものもあれば、有害なものもありたすが、倧きな利点があるものもありたす。 各DNAフラグメントが実際に䜕をしおいるのかを芋぀けるこずは非垞に困難です。 塩基察の意味ず、タンパク質を䜜成するために塩基察のセットがアミノ酞に倉換される方法を完党に理解しおいたす。 私たちは、コヌディングに加えおDNAが果たすこずができる圹割のいく぀かを理解し始めおいたす。 しかし、ヒトゲノムの30億塩基察には、私たちがリモヌトでさえ理解しおいないものがただ倚すぎたす。 Radiolab CRISPR ゚ピ゜ヌドでは、これらのパズルの1぀がどのように解決されたかに぀いお説明しおいたす。



League of Legendsのデヌタの負債は、些现な修正を培底的なテストに倉えるずきに最倧の圱響を及がしたす。 ほんの䞀䟋に぀いお説明したすが、信じられたす。デヌタの借金は、 LoL゚ンゞンを倉曎する最も重芁な理由の1぀です。 圓瀟のゲヌム開発者は、ゲヌムシステムの実装に関する詳现な知識を持ち、䞀郚のコヌドフラグメントが倉曎されたずきにどのデヌタが砎損するかを予枬する十分なスキルを備えおいたす。









数幎前に修正されたデヌタ借金の忘れられない䟋は、スクリプト蚀語BlockBuilderのブロックパラメヌタヌに関連付けられおいたした。 䞊の画像は、倉数ず定数によっお所有者の鎧の倀を増やす方法の䟋を瀺しおいたす。 Ownerは25ナニットのアヌマヌボヌナスを受け取るこずを期埅しおいたすDelta倉数から20、ブロックに枡され、5は定数から。 ただし、倉数名がパラメヌタヌ名ず䞀臎するため、このアクションでは40ナニットが远加されたした。 なぜ45ではないのかず聞かないでください。どのような思考プロセスがこれに぀ながったのかわかりたせん。



NoopMoney Championsチヌムの開発者がこのずんでもない動䜜を修正し始めたずき、圌がしなければならなかったのは、4行のコヌドを削陀するこずだけでした。 しかし、このような䌝染性の高い債務の堎合、小さな倉曎でも慎重な蚈画が必芁です。 このバグにより、 400,000行のLoLスクリプトの数倀パラメヌタヌが2倍になる可胜性がありたす。 さらに悪いこずに、これらのスクリプトは、ゲヌムがこれらの2倍の倀に察しおバランスが取れお調敎されおいるずいう意味で、「正垞に動䜜したした」。 NoopMoneyは、予期しないバグの堎合修正をリアルタむムで無効にし、正芏衚珟の詳现な怜玢を実行し、品質管理郚門を読み蟌んで、このバグのおかげでどのスクリプトが正しく機胜するかを刀断する必芁がありたした。 最終的に、このバグの修正による問題はかなり取るに足らないものでした。 少数のチャンピオングルヌプのスクリプトに倉曎が加えられたした。 しかし、デヌタの負債により、予枬が困難であるこずが刀明したした。



パラメヌタの呜名に関するバグメトリック









1.圱響2/5



このバグの出珟は、ゲヌムにほずんど圱響したせんでした。 圌は送信された倀を2倍にし、定数を萜ずす確率がありたした。 しかし圌は、デザむナヌず開発者がそれらに぀いお孊んだ埌考慮に入れなければならない、もう1぀の圹に立たない集合的な知識になりたした。 開発者の泚意は、このように散らばるにはあたりにも貎重なリ゜ヌスです。



2.消去のコスト2/5



私が蚀ったように、修正プロセスは簡単でした。 リアルタむムの修正ロヌルバック機胜を䜜成するこずにより、セキュリティの信頌性を高めるこずができたした。 最も高䟡な郚分は、タヌゲットテストの問題の範囲を評䟡する初期分析でした。



3.感染4/5



このバグで倱敗したのは、非垞に論理的な動䜜に基づいおいたずいうこずです。 たずえば、ナニットにダメヌゞを䞎えたい堎合、ダメヌゞ倉数に倀を保存するこずは完党に論理的です。 残念ながら、この倀を受け取ったApplyDamageブロックには同じ名前のパラメヌタヌがあり、バグに぀ながりたした。 その埌、他の誰かが同様の呪文を䜜成したいずき、圌は単にこれらのブロックをコピヌしお、バグをさらに広めたした。



通垞、デヌタの負債を修正するコストは、倉化を枬定するのが難しいため高くなりたす。 より危険なこずは、コヌドずは察照的にいく぀かのデヌタプロパティのために、ほずんど垞に非垞に䌝染性があるこずです。 最初に、既存のデヌタ芁玠をコピヌしお新しいデヌタ芁玠を䜜成するこずは䞀般に蚱容されるず考えられおいたす。 新しいスキルショットスペルを行う堎合、゚ズリアルの神秘的なショットを基瀎ずしお䜿甚するこずで、倚くの時間を節玄できたす。 既存のデヌタ項目に関するすべおの問題は、その子孫にたで及びたす。 第二に、コヌドずは異なり、デヌタが技術的な分析を受けるこずはほずんどありたせん。 したがっお、たずえよく知られおいたずしおも、誀った慣行の広がりに気づき、止めるこずは困難です。 最埌に、デヌタの゚ラヌを修正するには、目ず脳のある人が通垞必芁です-コンパむラヌず正匏なロゞックはそれらに察凊したせん。



デヌタの借金をなくすために、2぀の䞻なアプロヌチを芋たした。 最初に「正しく実行」フラグを呌び出したす。 デヌタ䜜成者にずっお、これは叀い「壊れた」動䜜から新しい「修正された」動䜜に移行するこずを意味したす。 理想的には、叀いコンテンツが壊れたバヌゞョンを䜿甚しおいるこずが刀明した埌、改蚂バヌゞョンがデフォルトバヌゞョンになるはずです。 その埌、McGyverの借金の堎合のように、ゆっくりず段階的な亀換を開始しお、新しいバヌゞョンに切り替えるこずができたす。 同時に、゚ディタヌのUIにナンセンスを远加するコストは垞に䞀定です。



私が呌ぶ2番目のアプロヌチは、「間違いを修正する」だけです。 NoopMoneyは、パラメヌタヌ名のバグを修正するずきに䜿甚したした。 ゚ラヌを修正し、圱響を受けたすべおのデヌタを修埩するこずを意味したす。 このタスクにはそれほど嚁圧的ではなかったので、いく぀かのテクニックを䜿甚できたす。たず、バグの理論的な圱響を評䟡するために、倚くのgrepおよび正芏衚珟怜玢を実行する必芁がありたす。次に、タヌゲットテストを実斜したす。最埌に、修正䞭のバグよりも悪い䜕かを芋逃した堎合に備えお、修正の導入埌に叀い動䜜に戻るように切り替え関数を準備できたす。たた、決定論がこれらの皮類の倉曎をテストする䞊で非垞に圹立ったこずも泚目に倀したす。倉曎の前埌でサヌバヌが同じ結果を提䟛するこずを確認できたした。



たずめるず



技術的負債の䟋を評䟡する堎合、圱響ナヌザヌおよび開発者に察する、陀去のコスト䞀時的およびリスクの皋床、および感染のメトリックを䜿甚できたす。ほずんどの開発者が排陀の圱響ずコストを定期的に評䟡しおいるず思いたすが、感染に関する議論はほずんど芋たせんでした。問題の修正がたすたす難しくなるず、感染が開発者の最も深刻な敵になる可胜性がありたす。ただし、堎合によっおは、感染を自分の歊噚に倉えお、問題よりも修正を䌝染させるこずができたす。リヌグに



取り組むずき私が芳察する技術的負債のほずんどは、これらの4぀のカテゎリのいずれかに該圓したす。地方の借金は嫌な内容のブラックボックスのようなものです。2぀以䞊のシステムが倉換機胜ず䞀緒にテヌプで固定されおいるのは、マクガむバヌの負債です。基本的な矩務により、構造党䜓はいく぀かの倱敗した仮定に基づいお構築されたす。デヌタの借金では、膚倧な量のデヌタが他の皮類の借金の䞊に階局化されるため、その修正はリスクが高く、時間がかかりたす。



この投皿が、技術的な負債に぀いお考え、議論するのに圹立぀食べ物を提䟛するこずを願っおいたす。



All Articles