ソフトウェアエンジニアとして、他人のコードを読むことはどれほど重要ですか?


25

私は新進のソフトウェアエンジニア(現在、2年生、CS専攻)であり、他の人のプログラムを理解するのに本当に苦労しています。このスキル(またはスキルの欠如)が私にとってハンディキャップになる可能性があるかどうかを知りたいのですが、もしそうなら、どのように開発できますか?


1
コードが説明されているときにコードを理解していると感じますか、それとも試行錯誤で学習しているだけですか?
ジェフ

1
なぜこれが「コーディングスタイル」とタグ付けされているのですか?フォーマットが不十分なため、コードの読み取りに問題があるのはなぜですか?コードを読むことができるということは、フォーマットや難読化が非常に不十分なコードを理解する必要があるという意味ではありません。役立つ場合は、まずフォーマットツールを使用してコードを実行します。
ブランディン


これは素晴らしい質問です!私はフォローアップの質問がありました:あなたが主に自分で自分のコードで作業する場合(例えば、小さなプロジェクトの科学プログラマーとして)、どうやって読むのに良いコードを見つけるのですか?これは以前に尋ねられました:softwareengineering.stackexchange.com/questions/69892/…–
Gaurav

回答:


49

不可欠です。

あなたがそれを開発する方法は、あなた自身のコード(それの多く)を書くことです、そして、はい、他の人のコードを読むのに苦労しています。

問題は、もちろん、誰もがあなたのやり方を考えているわけではないということです。私は1年前にJavaの1年生クラスに参加していましたが、割り当てを受けました。私が信じていたことに反して(答えは3つまたは4つの一般的な解決策に収束するということでした)、クラスの全員が課題に対して独自の解決策を持っていました。

そのため、適切なコードを読む必要があります。

これが、デザインパターンが非常に人気になった理由の1つであり、それらを研究する必要がある理由です。設計パターンは、プログラマーが通信の共通の語彙を提供し、コンピューティングの問題を解決する「より良い」方法のために心を調整します。

アルゴリズムとデータ構造も学習する必要があります。

結果: 他の開発者がすぐに理解できるコードを書くよう常に努力する必要があります。


7
当然の結果:という書き込みコードに努力することによって開始シンプルあなたが容易に理解することができます:-)
gnasher729

4
一般的に良い答えは、パターンに関する部分を保存することです。ほとんどのGoFパターン(この用語を使用するときに人々が考えるもの)は、過剰に設計されており、非常にきめが細かく、オブジェクト指向にすぎず、単純なアンチパターンです。そして、人々はここで、これらのパターンのどれを彼らのソリューションに使うべきか尋ねました。開発者がパターンで時間を浪費することは決してしないでください。
デビッドアルノ

小さな問題(たとえば、リスト内の数字を逆にする)の場合、考えられる答えは少数の考えられる解決策に収束するはずです。適切な割り当てには、そのような問題の多くを解決し、何らかの方法でそれらの問題の解決策を手配する必要があります。そのため、割り当ての可能な解決策の総数は非常に急速に増加します。
ブランディン

15

それは非常に重要。

卒業して世界に出ると、あなたが取り組むほとんどのプロジェクトはすでに他の人からコードが提供されています。ラッキーは、グリーンフィールドプロジェクトにすべての時間を費やすことができるプログラマです!

それは練習と忍耐を通じて取得されるスキルです、そして多くの場合、それはそのスキルだ多くの人々は本当にまでの作業に多くの機会を得ることはありませんした後、彼らは卒業し、その最初の仕事を得るが。リラックス!

(あなたの学校が生協プログラムを持っている場合も、それは主に、他の人によって書かれている大規模なプロジェクトに取り組んにあなたは事前に卒業に経験を与えるだろう、それは利用可能だ場合、に!見た目に何かをそれはあなたの学術クレジットを取得します)


7

これは主要なスキルであり、作業場所の詳細に応じて、コード自体を書くことよりも重要になる場合があります。

他のスキルとして、練習が完璧になります!他のプログラマーのコードを読み、デバッグし、個人的に私を助けるものを試してみてください。それは、小さなコードをリファクタリングまたは改善し、そこから拡張することです。


また、使用しているオープンソースプロジェクトを知り、内部コードがどのように機能するかを理解しようとすると役立つ場合があります
RMalke

4

コードの読み取りと書き込みの両方に明確なスキルがあります。

  • 1つは構文です。メソッド宣言がどのように見えるかを知る。
  • もう1つは意図です。メソッドが存在する理由と、そのメソッドが提供する目的を知る。

読み取りと書き込みについて。はい、読書は不可欠です。
それについて私たちの多くを助けるいくつかの格言は次のとおりです。

  • コードは、書き込まれるたびに(少なくとも)10回読み取られます。
  • 他の誰かがコードを読んでいることがよくあります...私は将来コードを読んでいます。
  • コードスタイルを1年以上前から守るつもりはありませんが、それ以来改善されています。

OK。それはすべて素晴らしいです。おそらくあなたが経験していることまで。

OMG、これなど、など、数十クレイジー依存関係と私は私の頭の中で10個のレベルを維持する必要があります何かを追跡しようとするたびにと長い行の数百あるソースコードとクラスのラインの何千ものと巨大なコードベースをおかしく
おなじみのサウンド?うん。深呼吸。リラックス。正常です。本番システムの構成要素です。人々はこれらの一見不可解な状況で生き残ります(そして繁栄します):

  • テスト(できれば)が存在し、システムの文書化にも役立ちます。
  • プログラマーはペアになり、多くの場合、結果は2倍以上になります。
  • 優れたプログラマーは、理解するまで理解できないと言うのが得意です。
  • 変更は多くの場合、テスト対象を分離するのに役立つ1行または数行のコードです
  • コードベースに慣れるには数ヶ月、さらには数年かかる

最後に、優れたプログラマーは、ソースバージョン管理システムに変更をコミットするときに、意味のあるコミットメッセージを作成します。(答えに追加してください)
-rwong

1

これらの回答のほとんどは、自己改善のためのコード読み取りの重要性に焦点を当てています。私は心から同意し、これを支持します。

注意すべき別の角度があります-あなたが他のアプローチを読むことから恩恵を受けることができなかった天才であったとしても(不可能ですが、議論のために...)、あなたはまだコードの読み方を知る必要があります基本的に大学の環境には存在しない概念:産業プロジェクトの大部分は、ブラウンフィールドプロジェクトです(つまり、既存のコードベース内または既存のコードベースと統合)。

既存のコードベースとプロセスを理解するためだけにコードを読む必要があります。コードについて別の開発者に質問することは常に可能ですが、これには時間がかかります。人々は去り、プロジェクトを切り替え、またはただの時間を過ごす。低レベルの詳細はメモリから消え、メンテナンスプログラマはパッチを適用します。ある時点で、コード自体以外の単一の真実のソースはありません。

優れたコード衛生、スタイルガイド、コードレビュー、ドキュメントヘルプがありますが、ある時点でコードは何が起こるかの真実の源であり、答えを見つける唯一の方法は自分でそれを手に入れることです。自己開発での使用は別として、コードを読み取る機能は、コードを書くこととは明確に分かれたスキルです。


0

他のコードを理解することは、チームではなくてもさまざまなものをグーグルで検索し、サンプルコードを理解する必要があるため、チームで作業する可能性が高いため、逃れることはできません。はい、それは必須です。

私が感じているのは、誰もが始めに特別に他のコードよりも感じが少ないかもしれないということですあなたの心の中に。他のコードでより多くの時間を費やし始め、どのような構造/フローが使用されているかを最初に確認しようとすると、確かにコードをよりよく理解できます。

あなたが1年前に書いたコードがある場合に私のポイントをさらに説得力があるようにするには、もう一度それを理解してみてください。コード。

このヘルプを願って、それが完全に正常であることを失望しないでください。コードにより多くの時間を費やすと、最終的にそれを取得できます。


0

さて、私は別の国のチームによって書かれた約100,000行のコードを含むプロジェクトを与えられました。可能な限り共通。

あなたは、他の人のコードを速く読む能力なしに、私が仕事をする方法を教えてくれます。他の人のコードを読むことができない場合、あなたは完全に、完全に立ち往生しています。

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