質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.33%

  • Java

    14473questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

プログラミングの学習・コードの読み方について

受付中

回答 4

投稿

  • 評価
  • クリップ 3
  • VIEW 1,264
退会済みユーザー

退会済みユーザー

現在25歳、中途採用で今の会社に入ってから現場に配属されて4か月目です。
現場ではJavaを使用したWebシステムを開発していますが、コードがなかなか理解できないです。
for分やif文などの基本的な構文は理解できているのですが、長いコード(300行くらい)だと理解するのに1日かかってしまいます。
改修するのにもコードが理解できていないので、時間がかかってしまいます。

コードを読むときのコツなどありますか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+10

いきなり実装をみてもわからないと思いますよ。
1-仕様書を読み、修正対象の機能を調べましょう。
2-各機能に関連するクラスの役割を調べましょう。
3-クラス内のメソッド名を一通り見ましょう。

仕様書があって、クラスがある程度分割されててメソッド名がやりたいことを表していたら、if文やfor文なんて読む必要はないですよ。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/15 06:30

    ご回答ありがとうございます。

    キャンセル

+5

人のコードを読むのは確かに大変な部分ですよね。
特に、きれいに書いてくれている人とそうでない人とでは読むコストが段違いです。
なので、もしきれいに書いてくれていないのであれば、それなりに時間がかかるのは仕方がないかなとは思います。

ちなみにコツというほどのことではないですが、プログラムは「言語」と名のつく通り、日本語や英語と同列に考えると違った視点で見れるかなと思っています。

どういうことかというと。
日本語であれ英語であれ、「自然言語」を読むときというのは、「文章の塊」を認識、全体を推測しながら「この文章は何を話しているのだろうか」というのを無意識に考えながら読んでいると思います。
(つまり、詳細を追っているのではない、ということです。例えばセンテンスの最初と最後の文字が一緒なら、単語の中の文字の並びがばらばらでもある程度読めてしまう、というあれです。「しんゅじく」と書いてあっても「新宿」と読めてしまう、的な)

プログラムも同様のことが言えて、「このブロックはなにをしているのか」を、ある程度の塊で見るようにしていくと、意外と理解が早まるものです。
つまり、for文やif文などの細かいところを見るのではなく、「ここではなにか特定の値を求めているのだな」というくらいのざっくりとした理解で次に進む、ということです。

そしてメソッド全体、さらにはクラス全体の意味をなんとなく理解した時点で、改めて各メソッドやブロックが具体的にどんな処理をしているのか、を見ていくと概要から詳細へ読み進めるような感覚で内容を理解できるようになると思います。

実際問題として、バグ修正でもない限り、1行1行しっかり噛み砕かないとダメ、というケースは稀だと思います。
塊としてどんな処理を行っているのかが分かるだけでいい、と気楽にプログラムを読んでみてはいかがでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/15 06:30

    ご回答ありがとうございます。

    キャンセル

+2

はじめまして。
私も中途採用でこの業界にきました。
ので、気持ちが痛いほどわかりますよ。焦りますよねぇ。。

他の方と重複する箇所もありますが、私の実装へのアプローチ方法を書きました。
ご参考までに。

他の方も書かれていますが、機能の目的を理解する。
これに尽きます。

ただ、私自身はそこに行き着くのが遅かったのでいろいろ試しました。
例えばソースをエクセルにコピーしてA3で紙出ししてソースを読みながらA3の紙にひたすら赤ペンで書いたりしてました。(よくやりますよね笑)

で、あるときそのA3の紙がプログラム設計書だと気付き、プログラム設計書を読んだところ
「全体がわからない。。」という課題が出てきて、結果、上流の設計書を見るようになり
「で、結局この機能は何がしたいのだ!」という疑問(というかイライラ)にぶち当たり要件定義を見るようになった感じです。。。

そこで初めて、「ユーザーの要望とそれを実現する機能」がつながり
コードから読むより、目的を理解するほうが
早くて正しい
という答えに行き着きました。

ちなみにですが
>改修するのにもコードが理解できていないので、時間がかかってしまいます。
これはご自身が抱えられている課題なのでしょうが、個人的にはすばらしいな、と思いますよ。
「なんとなくコピペしたら動いた、だからOK」とか言ういう人もいますしね。。ぞっとしますよね。
まだ4ヶ月。
今はまだ時間がかかるかもしれませんが、仕事に慣れていく時期だと思います。
即効性のある手法はなかなかなく焦る気持ちもあるかもしれませんが、一歩づつ積み重ねていただけたらと思います。

がんば。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/22 21:24

    ご回答ありがとうございます。
    応援していただき、ありがとうございます。

    キャンセル

  • 2017/02/23 10:58

    がんばってください!応援しています!追加質問もご遠慮なく~

    キャンセル

  • 2017/02/23 20:33

    ありがとうございます。嬉しいです!
    (>_<)

    キャンセル

0

ほとんどのプログラムの場合、
・大きな流れを制御する処理
・その処理から呼ばれる細かい処理
の2つで構成されていると思います。
JavaでWebとのことなのでそれにあわせて考えると、前者は、あるページの更新処理、などですかね。
後者は、その更新処理の中から呼び出す細かい処理、例えば入力チェック処理とかですね。
どちらもその処理には目的があります。
それはある程度メソッド名(関数名)から推測できるはずです。
(メソッド名と中身があっていないようなソースは糞ですね(すみません))
なのでその目的を達成するために、どのようなことをしているのか、という観点で見ていくといいかなと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/15 22:24

    ご回答ありがとうございます。

    キャンセル

同じタグがついた質問を見る

  • Java

    14473questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。