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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

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

Q&A

4回答

4569閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

1グッド

4クリップ

投稿2017/02/14 12:03

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

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

T_sa👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

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

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

投稿2017/02/14 12:24

編集2017/02/14 12:26
yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/02/14 21:30

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

0

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

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

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

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

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

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

投稿2017/02/14 15:23

edo_m18

総合スコア2283

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/02/14 21:30

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

0

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

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

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

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

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

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

ちなみにですが

改修するのにもコードが理解できていないので、時間がかかってしまいます。

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

がんば。

投稿2017/02/19 03:24

kometaroimo

総合スコア76

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/02/22 12:24

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

2017/02/23 01:58

がんばってください!応援しています!追加質問もご遠慮なく~
退会済みユーザー

退会済みユーザー

2017/02/23 11:33

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

0

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

投稿2017/02/15 00:05

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/02/15 13:24

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問