「実甚的なプログラマ。 芋習いからマスタヌぞの道」䞻なものに぀いお簡単に説明するパヌト1

本「 プログラマヌプラグマティスト 」に぀いお。 芋習いからマスタヌぞの道 »Andrew HuntずDavid Thomasは、おそらくプログラミングに関わるすべおの人に知られおいたす。その倚くは、䞻に匕甚笊での蚀及ず、より珟代的な蚘事での匕甚からです。 開発者向けのこの実甚的なヒントのコレクションは、たもなく20呚幎を迎えるこずを考えるず、貎重な情報の゜ヌスずしおただ匕甚されおいるずいう事実は立掟です。 秘密は簡単です。著者は、圌らのヒントの実際的な適甚可胜性を匷調したしたが、ワヌクフロヌを構築する基本的な原則に぀いお䞻に語りたした。 本文に蚘茉されおいる技術的なポむントの倚くは、実際にはかなり叀くなっおいたすが、開発、テスト、チヌム内および聎衆ずの盞互䜜甚に察する基本的なアプロヌチは匕き続き重芁です。









以䞋に、最初の4぀の章の抂芁を瀺したす。 圌らは、著者の自己教育の抂念、プログラミングぞの実甚的なアプロヌチの基本、ツヌル遞択のルヌルに぀いお話しおいる。 この本は、「ポむント」を読むのに非垞に䟿利です。資料は、盞互参照を備えた個別の段萜ヒントの圢匏で提瀺されたす。 この芁玄の範囲を超えお、特定の蚀語からの䟋、著者の実践からの事䟋の分析、同じリンク、補匷のための挔習、テキストを掻気づけるいく぀かの面癜い類掚が残っおいたす。 玠敵な読曞を



ヒント1クラフトの䞖話をする



仕事の質を気にしないのであれば、プログラムを開発しおも意味がありたせん。 これは、特定のプロゞェクトに関連しお短期的にだけでなく、長期的にも実行する必芁がありたす-正しいアプロヌチず仕事の原則を圢成したす。



実甚的なプログラマヌの違いは䜕ですか





ヒント2仕事に぀いお考える



コヌドを曞いおいる間、あなたは自分がしおいるこずに完党に集䞭する必芁がありたす。 自動操瞊モヌドに移行しないでください。 垞に考え、リアルタむムで䜜業を批刀的に再考したす。 これは、意識的なプログラミングず呌ばれたす。 その開発にはある皋床の時間ず劎力が必芁ですが、その芋返りは、マむナヌな改善を継続的に行い、コヌド党䜓の品質を向䞊させ、開発時間を短瞮する習慣です。



第1章実甚的な哲孊



実甚的なプログラミングは、実甚的な思考の哲孊に由来したす。 この章では、䞻なポむントを説明したす。



ヒント3問題を解決するためのオプションを提瀺したす。



実甚的な哲孊の基瀎の1぀は、自分自身ず自分の行動に責任を持぀ずいう考え方です。 実甚的なプログラマヌは、圌のキャリアず仕事の結果は䞻に圌に䟝存しおおり、無知や間違いを認めるこずを恐れないこずを前提ずしおいたす。



結果に察する責任の受け入れは、報告する意欲を意味したす。 間違いを犯した堎合そしお私たち党員が間違いを犯した堎合、それを正盎に認め、修正オプションを提案しおください。 同僚、パヌトナヌ、ツヌルに察する非難を倉えたり、蚀い蚳をしたりしないでください-これは時間の無駄です。 満たすこずができない芁件に盎面しおいる状況にも同じこずが圓おはたりたす。「これは䞍可胜です」ず蚀うだけでなく、状況を保存するために必芁なもの远加のリ゜ヌス、再線成などを説明したす。









ヒント4壊れたりィンドりを攟眮しないでください



゚ントロピヌは物理孊の甚語で、システムの「障害」のレベルを瀺したす。 宇宙の゚ントロピヌは最倧になる傟向があり、開発でも同じパタヌンが芳察されたす。 プロの専門甚語プログラムの混乱の床合いを高めるこずは、プログラム砎損ず呌ばれたす。 プログラムの劣化に寄䞎する倚くの芁因がありたすが、それらの䞭で最も重芁なのはプロゞェクトの文化です。



壊れたりィンドりの理論によるず、厄介な解決策ず問題のある領域は増加する傟向がありたす。 「壊れたりィンドり」構築の倱敗、゚ラヌ、䜎品質のコヌドを泚意せずに攟眮しないでください。 適切な修埩の時間がない堎合は、少なくずも゚ラヌのあるフラグメントをコメントアりトするか、画面に「開発䞭」ずいうメッセヌゞを衚瀺するか、ダミヌデヌタを䜿甚したす。 さらなる砎壊を防ぐために、そしおあなたが状況をコントロヌルしおいるこずを瀺すために、少なくずもわずかな行動をずる必芁がありたす。 過倱は、他のどの芁因よりも速く腐敗を加速したす。



ヒント5倉化の觊媒になる



䜕をする必芁があるかがわかったら、他の人からのむニシアチブを埅たないでください。 蚈画を立お、詳现を緎り䞊げたす-䜜業がすでに始たっおいるこずがわかるず、人々は喜んであなたをサポヌトしたす。



ヒント6お楜しみに



䜕が起こっおいるかの党䜓像から目を離さないでください。 あなたが個人的に行うこずだけでなく、あなたの呚りで䜕が起こっおいるかを垞に芳察しおください。 コヌド内のほずんどの灜害は、プロゞェクトが晎れる1日たで蓄積する埮劙なものから始たりたす。 ステップごずに、システムは芁件から逞脱し、コヌドは「パッチ」に囲たれたすが、元のものは残りたせん。 倚くの堎合、それは道埳ずチヌムの砎壊に぀ながる蓄積ささいなこずです。 しかし、このプロセスを早い段階でキャプチャし、すぐに行動を起こせば前の段萜を参照、わずかな血で降りるこずができたす。



ヒント7品質を芁件の1぀にする



品質は、ナヌザヌず締結する契玄の契玄条項である必芁がありたす。 もちろん、理想的には最倧にすべきですが、締め切りが厳しく、リ゜ヌスが䞍足しおいるために劥協しなければならない状況に陥るこずがよくありたす。 そしおここでは、受け入れ可胜なプログラムの䜜成に慣れるこずが圹立ちたす。 「蚱容可胜」ずは「䞍䜜為」を意味するものではありたせん。蚱容できるず芋なされる品質のしきい倀を決定する際に、ナヌザヌに投祚暩を䞎えるだけです。 驚いたこずに、倚くの人はマルチメディアバヌゞョンのリリヌスを1幎埅぀のではなく、今日いく぀かの欠陥のあるプログラムを䜿甚するこずを奜みたす。



さらに、朜䌏期間を短くするこずでプログラムが改善される堎合がありたす。 開発では、「リサヌフェシング」の問題がありたす。倖郚の制限は、卓越性を远求するために時間内に停止するのに圹立ちたす。



ヒント8知識ポヌトフォリオに定期的に投資する



知識ポヌトフォリオずは、プログラマヌが自分の分野での開発に぀いお知っおいるすべおのこず、および圌の経隓を指したす。 知識ポヌトフォリオの管理は、金融ポヌトフォリオの管理に非垞に䌌おいたす。



䞀般的な原則は次のずおりです。



  1. 定期的に投資する 。 投資額が少なくおも、この習慣はそれ自䜓で圹立ちたす。
  2. さたざたな分野に投資する 。 キャプチャする゚リアが倚いほど、倀は倧きくなりたす。 少なくずも、珟圚䜿甚しおいる特定のテクノロゞを知っおいる必芁がありたす。 しかし、そこで停止しないでください。 技術の需芁ずその適甚性は垞に倉化しおいたす。 歊噚庫で䜿甚するツヌルが倚くなればなるほど、簡単に適応できるようになりたす。
  3. リスクを比范怜蚎する 。 技術は、リスクが高く朜圚的に収益性の高いものから、䜎リスクで䜎利回りたで、䞀定の範囲にありたす。 コヌスが突然厩壊する可胜性のある危険なオプションにすべおを投資するこずは良い考えではありたせんが、収益性の高い機䌚を利甚できない過床の泚意も必芁です。 真ん䞭にいる方が良い。
  4. より安く賌入し、より高䟡に売る 。 普及する前に高床な技術を習埗するこずは難しい䜜業ですが、それだけの䟡倀がありたす。早期採甚者はめたいがするようなキャリアを䜜るこずがよくありたす。
  5. 定期的に芋盎しおバランスを取り盎しおください 。 プログラミングは非垞にダむナミックな業界です。 資産を定期的に批刀的にレビュヌする準備をしたす。叀いオプションを攟棄し、䟡栌を䞊げ、空のニッチを埋めたす。


孊習プロセスはあなたの思考を広げ、創造性の新しい機䌚ず新しい方法を提䟛したす。 䜕か新しいこずを孊んだら、䜿甚しおいる技術が蚱す限り、この知識を珟圚取り組んでいるプロゞェクトに適甚しおみおください。



ヒント9批刀的に読んで読む



ポヌトフォリオの知識が正確であるこず、それから利益を埗る人々によっお歪められおいないこず、そしおその䟡倀が誇倧広告によっお誇匵されおいないこずを確認する必芁がありたす。 圌らの教矩が唯䞀の正しい答えを提䟛するず䞻匵する狂信者に泚意しおください-それはあなたのプロゞェクトに適甚されない可胜性が完党にありたす。



ヒント10話す重芁なこずず話す方法



プログラマヌの1日の倧半は、コヌド、ドキュメント、コメントを通じお、チヌム、管理者、ナヌザヌ、次䞖代の開発者ずのコミュニケヌションに費やされたす。 したがっお、圌の芞術を習埗する必芁がありたす。 このコミュニケヌションが効果的になればなるほど、アむデアを珟実に倉換する胜力が高たりたす。



効果的なコミュニケヌションの原則



  1. あなたが蚀いたいこずを知っおいる あなたが蚀うこずを前もっお蚈画し、蚈画を抂説し、アむデアをより良く䌝える方法のためのいく぀かの戊略を立おたす。 これは、曞類䜜成ず重芁な亀枉の䞡方に有効です。
  2. 聎衆を知る 情報を送信する堎合にのみ通信したす。 これを行うには、聎衆のニヌズ、興味、胜力を認識する必芁がありたす。 聞き手が理解し、興味深い方法で情報を提瀺したす。
  3. 適切なタむミングを遞択する 芖聎者を理解するための重芁なポむントは、その優先順䜍を理解するこずです。 あなたが蚀うこずは、コンテンツに関連するだけでなく、タむムリヌであるべきです。 必芁に応じお、「今...に぀いお話すのは䟿利ですか」ず率盎に尋ねたす。
  4. 必芁なスタむルを遞択しおください 芖聎者の芁件に応じお、資料のプレれンテヌションスタむルを定矩したす 。誰かが玠朎な事実を奜み、誰かが詳现、䟋、長文の玹介を奜みたす。 繰り返したすが、疑問がある堎合は確認しおください。
  5. 服装で䌚う 自分のアむデアを適切に「提䟛」する方法を知っおいる。 最終文曞では、スペル、レむアりト、テキストスタむル、タむポグラフィなどすべおを確認する必芁がありたす。
  6. 芖聎者を匕き付ける 可胜な限り、ドキュメント䜜成プロセスに将来の読者を匕き蟌みたす。 圌らのアむデアを䜿甚したす。 だからあなたは最高の結果を埗お、仕事䞊の関係を匷化したす。
  7. 聞く方法を知っおください 質問をしたり、あなたが蚀ったこずを芁玄するこずを圌らに匷制する人々ず䌚話しおください。 䌚議を察話に倉えるず、あなたが蚀いたいこずを䌝え、同時に自分のために䜕かを孊ぶこずができたす。
  8. 䌚話を䞭断しないでください少なくずもこの質問に埌で戻るこずを少なくずも玄束しお、芁求ずメッセヌゞに垞に応答しおください。 あなたが人々を最新の状態に保぀なら、圌らは圌らが圌らを忘れおいないず感じたす、そしお、それはランダムなミスを蚱すのがはるかに簡単です。


第2章実甚的なアプロヌチ



プログラム開発のすべおのレベルで適甚可胜な倚くのヒントずコツがありたす-公理ず考えられるアむデア、ほずんど普遍的なプロセス。 この章では、これらのアむデアずプロセスを確認したす。



ヒント11繰り返さないでください



知識の各郚分は、システム内で䞀意の明確な信頌できる衚珟を持぀必芁がありたす。 別の方法は、同じテヌマを耇数の堎所で提瀺するこずです。 これは䞍䟿です。ある堎所で䜕かを線集した堎合、すぐに他のすべおの堎所を倉曎する必芁がありたす。そうしないず、矛盟の重みでプログラムがクラッシュしたす。 遅かれ早かれ䜕かを忘れおしたいたす、それは時間の問題です。



ほずんどの耇補ケヌスは、次のカテゎリのいずれかに分類されたす。





ヒント12プログラムを再利甚しやすくする



れロから自分で䜜成するよりも、既存の玠材を芋぀けお再利甚しやすい環境を䜜成しおください。 これにより、耇補のリスクを軜枛できたす。 念頭に眮いおください再利甚に困難が䌎う堎合、人々はそれを行いたせん。



ヒント13互いに関連しおいないオブゞェクト間の盞互䜜甚を避ける



この芏則は、盎亀性の原理ずも呌ばれたす。 2぀以䞊のオブゞェクトに倉曎を加えおも、残りのオブゞェクトに圱響がない堎合は、2぀以䞊のオブゞェクトが盎亀しおいたす。 このようなスキヌムには、生産性の向䞊ずリスクの䜎枛ずいう2぀の倧きな利点がありたす。



システムの倉曎がロヌカラむズされるず、開発ずテストの時間が短瞮されたす。 小さな自己完結型のコンポヌネントが蚭蚈、実装、およびテストされた埌は、コヌドに新しいフラグメントが远加されるたびに垞に倉曎を加えるのではなく、単にそれを忘れるこずができたす。



盎亀アプロヌチは、コンポヌネントの再利甚も促進したす。 システムの接続が少ないほど、再構成たたはリ゚ンゞニアリングが容易になりたす。



リスクの䜎枛は、誀ったフラグメントが分離され、システム党䜓に圱響を䞎えないずいう事実によっお匕き起こされたす。 したがっお、それらを修正たたは亀換するこずも簡単です。 その結果、システムはより安定したす-問題領域は領域のたたです。 たた、通垞、ナニットレベルのテストがより培底的に行われたす。



盎亀性の原則は、個々のテクノロゞヌのレベルで芳察されるべきではありたせんが、蚭蚈からツヌルの遞択、テストから補品管理たでのすべおのプロセスをカバヌする必芁がありたす。 重耇を最小限に抑え、システムの柔軟性ず透過性を高めたす。









ヒント14最終的な解決策はありたせん



芁件、ナヌザヌ、およびハヌドりェアは、゜フトりェアを開発するよりも速く倉化したす。 したがっお、あなたが䞋す決定コヌド内だけでなく、サヌドパヌティのツヌル、アヌキテクチャテンプレヌト、展開モデルを遞択するずきなどが、倖郚芁因の圱響䞋で将来修正される必芁があるずいう事実に垞に備えおおく必芁がありたす。 「最小重耇」の原則、非䞀貫性の原則、およびメタデヌタの䜿甚により、システムはより可逆的になりたす。



ヒント15トレヌサヌの匟䞞を䜿甚しおタヌゲットを芋぀ける



隠phorを明らかにする新しい補品を䜜成するずき、開発チヌムはしばしば芋知らぬテクニック、蚀語、およびラむブラリを䜿甚しお盲目的に行動したす。 最終結果は、技術の非垞に詳现な分析に基づくハヌド予枬、たたは「トレヌス」を䜿甚しお予枬できたす。「トレヌス」-䞀連の単玔化された詊行を䜜成し、システムコンポヌネントをたずめおそれらがどのように機胜するかを確認するために、䜜業バヌゞョンを埐々に改善したす。



このアプロヌチに代わる方法-個々のモゞュヌルの独立した開発は、最終段階でたずめられ、システムレベルで既にテストされおいたす-は、より重く、あたり䟿利ではありたせん。 ずりわけ、トレヌス方法は補品のドラフトバヌゞョンを提䟛したすナヌザヌに提瀺しお、プロゞェクトの本質を瀺し、興味を持ち、フィヌドバックを受け取るこずができたす。 既補の新しいモゞュヌルをよりスムヌズに環境に統合し、盞互䜜甚の゚ラヌを即座に特定しお簡単に排陀する機胜。



ヒント16それらから孊ぶためのプロトタむプ



䞊蚘のテストバヌゞョンずは異なり、プロトタむプの焊点はより狭くなりたす。プロトタむプは、いく぀かの特定の特性を解決するために䜜成され、必芁なリ゜ヌスが倧幅に少なくなりたす。 システム党䜓の運甚にずっお非垞に重芁であっおも、怜蚎䞭の問題に関連しないすべおの詳现は省略されたす。 プロトタむプで䜜業する堎合、正確性、完党性、信頌性、スタむルを無芖できたす。



プロトタむプを䜜成するために、本栌的な䜜業アプリケヌションを䜜成する必芁はありたせん。玙たたはボヌド䞊のスキヌムで十分な堎合もありたす。 それでも必芁な堎合は、この目的のために、プロゞェクトの残りの郚分で䜿甚される蚀語Perl、Python、Telなどの蚀語よりも高いレベルの蚀語を遞択するこずは理にかなっおいたす。 高床なスクリプト蚀語を䜿甚するず、倚くの詳现デヌタ型の指定を含むを省略し、同時にプログラムの機胜的で䞍完党で遅いフラグメントを䜜成できたす。



ヒント17スコヌプに目を向けおコヌドを曞く



プログラミング蚀語は、問題およびナヌザヌむンタラクションに関する考え方に圱響を䞎えたす。 各蚀語には独自の特性があり、特定の決定を䞋したり、逆にそれらを劚げたりしたす。 Lispスタむルで䜜成された゜リュヌションは、C信者の考え方に基づいた゜リュヌションずは異なりたす。逆の堎合も同様です。 その逆もたた圓おはたりたす。䜜業する問題の詳现を反映する蚀語は、プログラミングの分野で゜リュヌションを提䟛できたす。



ナヌザヌの芁件を聞くこずで、最高の抜象的なレベルで翻蚳するのが最も簡単な蚀語を理解できたす。 さたざたなタむプのナヌザヌ最終ナヌザヌ-プロゞェクトを行う察象ナヌザヌ、および副ナヌザヌ-マネヌゞャヌ、次䞖代の開発者は、独自のミニ環境ず蚀語の生成を必芁ずする堎合がありたす。



ヒント18驚きを回避するための評䟡を行う



倧たかな芋積もりを䞎えるこずはスキルであり、このスキルの重芁な郚分は、コンテキストに基づいお蚱容可胜な粟床を決定する胜力です。 遞択する枬定単䜍には、粟床の皋床も反映する必芁がありたす比范タスクには2週間かかり、タスクには75営業時間かかりたす。



評䟡はいく぀かの段階で実行されたす。 たず、質問の本質を掘り䞋げお、䞻題領域の範囲を評䟡したす。 ただし、質問の文蚀はしばしば回答を促したす。 次に、問題のモデルが構築されたす-それを解決するずきに枡す必芁がある段階の近䌌シヌケンス。 モデルはコンポヌネントに分解され、各コンポヌネントには有意性パラメヌタヌが蚭定されたす。 これらのパラメヌタヌず近䌌倀に基づいお、蚈算が行われたす。 最埌のステップは事実の埌に実行されたす-予枬は物事の実際の状態ず比范され、重倧な逞脱があり、䜜業ぱラヌに察しお行われたす。



ヒント19コヌドで必芁な堎合は、プロゞェクトのスケゞュヌルを確認しおください



経営陣はこれを奜たないかもしれたせん。通垞、プロゞェクトの開始前に発衚する必芁があり、倉曎されるこずはありたせん。 タスクのスケゞュヌルはチヌムの生産性ず状況によっお決定されるこずを通知する必芁がありたす。 この手順を正匏化し、各反埩䞭にスケゞュヌルを改善するこずにより、各段階の時間枠の最も正確な掚定倀を管理者に提䟛できたす。



第3章キャンプツヌルキット



ツヌルは才胜を高める手段です。 圌らがより良く、あなたがそれらをより良くすればするほど、あなたはより倚くのこずができたす。 すべおの基本的な操䜜に䜿甚する汎甚性の高い倖出先でのツヌルキットから始めたす。 このセットは、経隓を積んで特定の芁件に遭遇するず補充されたす。



ヒント20情報をプレヌンテキストで保存する



知識を氞続的に保存するための最適な圢匏は単玔なテキストです。これにより、手動で䜿甚可胜なツヌルを䜿甚しお情報を凊理できたす。 ほずんどのバむナリ圢匏の問題は、デヌタを理解するために必芁なコンテキストがデヌタ自䜓ずは別個であるこずです。 たた、埩号化せずに読み取れるシンプルなテキストを䜿甚するず、それを生成したプログラムから独立した自己文曞化されたデヌタストリヌムを䜜成できたす。



プレヌンテキストには、2぀の䞻な欠点がありたす。1圧瞮バむナリ圢匏よりも保存䞭により倚くのスペヌスを䜿甚する可胜性がありたす。2蚈算の芳点から、単玔なテキストを含むファむルの解釈ず凊理が遅くなる可胜性がありたす。 アプリケヌションによっおは、䞊蚘の状況のいずれかたたは䞡方が受け入れられない堎合がありたす。 ただし、このような堎合でも、゜ヌスデヌタをプレヌンテキスト圢匏で蚘述するメタデヌタを保存するこずは蚱可されおいたす。



単玔なテキストは次のずおりです。





ヒント21コマンドシェルの長所を䜿甚する



グラフィカルむンタヌフェむスのみで䜜業する堎合、オペレヌティングシステムが提䟛するすべおの機胜を䜿甚するわけではありたせん-兞型的なタスクを自動化しない、利甚可胜なツヌルを最倧限に䜿甚しない、異なる゜リュヌションを組み合わせお特殊なマクロツヌルを䜜成しないでください。 グラフィカルナヌザヌむンタヌフェむスの利点は、「衚瀺されるものが埗られるもの」ずいう原則に基づいお機胜するこずです。 グラフィカルむンタヌフェむスの䞻な欠点は、次のように定匏化できたす。「衚瀺されおいるものだけを取埗したす」。 通垞、このようなツヌルの範囲は、最初に考案された゜リュヌションのタスクに限定されたす。 このテンプレヌトを超えお行きたいそしお遅かれ早かれ望たなければならない堎合、あなたはそれらずの道を進んでいたせん。



シェルに慣れるために少し努力を払うず、あなたの仕事がどれほど生産的になるかに驚くでしょう。 行コマンドは理解されない堎合がありたすが、パワヌず簡朔さが異なりたす。 スクリプトファむルにコンパむルするこずにより、頻繁に実行される手順を自動化するコマンドのシヌケンスを䜜成できたす。



ヒント22単䞀のテキスト゚ディタを䜿甚したすが、最倧限に



テキスト凊理は最小限の劎力で行う必芁があるため、単䞀の゚ディタヌを完党に䜿いこなし、プログラムテキスト、ドキュメント、メモ、システム管理などの線集に関連するすべおの問題を解決するこずをお勧めしたす。いく぀かの゜フトりェア環境は、それぞれが独自のコマンドず暙準のセットを持っおいるこずを考えるず、それぞれに䜜業を反映させたす。 耇数の線集者を結合しようずするず、バビロニアの倧悪魔で状況を繰り返すリスクがありたす。



線集者の遞択はほずんど宗教であるため、特定の掚奚事項をここで行うこずはできたせん。 ただし、決定を䞋す際には、次のパラメヌタを考慮する必芁がありたす。





ヒント23垞に゜ヌス管理を䜿甚する



゜ヌス管理システムは、テキストおよびドキュメントに加えられた倉曎を远跡したす。 たた、コンパむラずオペレヌティングシステムのバヌゞョンの倉曎を远跡できたす。 適切に構成された゜ヌス管理システムを䜿甚するず、い぀でもプログラムの以前のバヌゞョンに戻るこずができたす。



゜ヌス管理システムは、誀ったアクションをキャンセルするだけではありたせん。 優れたシステムを䜿甚するず、倉曎を远跡し、䞀般的な質問に察する回答を提䟛できたす。「このテキスト行に倉曎を加えたのは誰ですか 珟時点で存圚するバヌゞョンず先週存圚したバヌゞョンの違いは䜕ですか このバヌゞョンで倉曎されたプログラムテキストの行数は どのファむルが最も頻繁に倉曎されたすか」 このような情報は、゚ラヌの远跡、監査、パフォヌマンス、品質評䟡に非垞に圹立ちたす。









デバッグはどうなっおいたすか



ヒント24チャヌゞではなく問題を解決する



バグ修正のトピックに移りたす-非垞に繊现でチヌムワヌクに非垞に関連性がありたす。 ここでは、他のどこにもないように、正しい態床が重芁です。 デバッグは他のすべおの人ず同じタスクであるずいう事実を理解し、その立堎からアプロヌチしたす。 実際、誰が゚ラヌの責任を負うかは問題ではありたせん-あなたたたは他の誰か。 それはあなたの問題のたたです。



ヒント25パニックしないでください



䞀歩䞋がっお最初の感情的な反応を抑え、実際に症状の根本原因ずは䜕か、どう察凊するかを考えるこずが非垞に重芁です。 単玔に症状を陀去し、それによっお衚面的なレベルで問題を解決する誘惑に抵抗したす-根本原因で䜜業したす。



゚ラヌを芋る前に、コンパむル段階をきれいに行ったプログラムで、譊告なしで䜜業しおいるこずを確認しおください。 コンパむラヌでさえ゚ラヌに時間を費やすこずは意味がありたせん。 利甚可胜な最倧情報を収集したす。 サヌドパヌティからバグが報告された堎合は、バグに遭遇した人に詳现を尋ねおください。



ヒント26オペレヌティングシステム倖の゚ラヌを探す



すべおがオペレヌティングシステム、デヌタベヌス、およびその他の゜フトりェアで正垞に動䜜しおいるず仮定したす。 「たった1぀の倉曎を加えた」だけでシステムが動䜜しなくなった堎合、この文がどれほど銬鹿げおいるように芋えおも、それが䜕が起こったかの原因である可胜性が高いです。 どこから始めればよいかわからない堎合は、叀き良きバむナリ怜玢にい぀でも頌るこずができたす。



䟋倖いずれかのツヌルが最近曎新された堎合、問題は新しいバヌゞョンずの競合が原因である可胜性がありたす。 このような競合の圱響を最小限に抑えるために、今埌の倉曎を远跡しおください。



ヒント27想定しない-蚌明する



䜕かがうたくいかないずきに経隓する驚きは、プログラムの正確さに察する信頌のレベルに盎接比䟋したす。 したがっお、プログラムの予期しない誀動䜜に盎面した堎合、1぀以䞊の仮定が間違っおいるこずを受け入れる必芁がありたす。 正垞に動䜜するこずを「知っおいる」ずいう理由だけで、゚ラヌを匕き起こしたコヌドフラグメントを盲目的に信頌しないでください。 最初にそれを蚌明しおください-実際のコンテキストで、実際のデヌタず実際の境界条件で。



, , , . - , ̆ ̆.



28:



, . ̆ . , ̆ – - .



, .



29: ,



: , , . . , .



. , . , , , , , , .



̆ , . « ». , . , . , .



4:



30:



. , . , ̆ ̆.



31: ̆



̆ ̆ , . , .



̆ ̆ ̆ ̆ : « , , ». , , , . : , , , , , .



, ̆ ̆ . – ̆, , (, , ), – . , , .



32: ̆ ̆



– ̆ , , . : , - .



, ̆ (, - , ̆ ). ̆ – , , , . , ̆, ̆, , . , .



33: - ̆, ̆ , , ̆



̆ , : « , ̆», . ̆ ̆ – . ̆ ++ assert _assert, ̆ . . , , ̆ ̆ , NULL, .



̆ . , ̆. , , , . : , . , , ̆ ̆.



34: ̆



, , , ̆; ̆ - . .



, , , . ; ̆.



̆ – ̆ goto. , ̆ ̆ , , ̆ . : , , ̆.



35: ,



: , , , ̆, ̆ – , , . ̆ : , , . , . : , , .



, :



  1. 配垃されたリ゜ヌスず逆の順序でリ゜ヌスを解攟したす。この堎合、リ゜ヌスの1぀に別のリ゜ヌスぞのリンクが含たれおいるず、「孀立した」リ゜ヌスの出珟を回避できたす。
  2. プログラムの異なる堎所に同じリ゜ヌスのセットを配垃する堎合、この操䜜は同じ順序で実行する必芁がありたす。これにより、デッドロックの可胜性が枛少したす。


動的デヌタ構造を䜿甚するプログラムでは、リ゜ヌス割り圓おの基本パタヌンが䞍適切な堎合がありたす。この堎合、トリックはメモリ割り圓おのセマンティック䞍倉量を確立するこずです。



All Articles