現在25歳、中途採用で今の会社に入ってから現場に配属されて4か月目です。
現場ではJavaを使用したWebシステムを開発していますが、コードがなかなか理解できないです。
for分やif文などの基本的な構文は理解できているのですが、長いコード(300行くらい)だと理解するのに1日かかってしまいます。
改修するのにもコードが理解できていないので、時間がかかってしまいます。
コードを読むときのコツなどありますか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
いきなり実装をみてもわからないと思いますよ。
1-仕様書を読み、修正対象の機能を調べましょう。
2-各機能に関連するクラスの役割を調べましょう。
3-クラス内のメソッド名を一通り見ましょう。
仕様書があって、クラスがある程度分割されててメソッド名がやりたいことを表していたら、if文やfor文なんて読む必要はないですよ。
投稿2017/02/14 12:24
編集2017/02/14 12:26総合スコア18155
0
人のコードを読むのは確かに大変な部分ですよね。
特に、きれいに書いてくれている人とそうでない人とでは読むコストが段違いです。
なので、もしきれいに書いてくれていないのであれば、それなりに時間がかかるのは仕方がないかなとは思います。
ちなみにコツというほどのことではないですが、プログラムは「言語」と名のつく通り、日本語や英語と同列に考えると違った視点で見れるかなと思っています。
どういうことかというと。
日本語であれ英語であれ、「自然言語」を読むときというのは、「文章の塊」を認識、全体を推測しながら「この文章は何を話しているのだろうか」というのを無意識に考えながら読んでいると思います。
(つまり、詳細を追っているのではない、ということです。例えばセンテンスの最初と最後の文字が一緒なら、単語の中の文字の並びがばらばらでもある程度読めてしまう、というあれです。「しんゅじく」と書いてあっても「新宿」と読めてしまう、的な)
プログラムも同様のことが言えて、「このブロックはなにをしているのか」を、ある程度の塊で見るようにしていくと、意外と理解が早まるものです。
つまり、for文やif文などの細かいところを見るのではなく、「ここではなにか特定の値を求めているのだな」というくらいのざっくりとした理解で次に進む、ということです。
そしてメソッド全体、さらにはクラス全体の意味をなんとなく理解した時点で、改めて各メソッドやブロックが具体的にどんな処理をしているのか、を見ていくと概要から詳細へ読み進めるような感覚で内容を理解できるようになると思います。
実際問題として、バグ修正でもない限り、1行1行しっかり噛み砕かないとダメ、というケースは稀だと思います。
塊としてどんな処理を行っているのかが分かるだけでいい、と気楽にプログラムを読んでみてはいかがでしょうか。
投稿2017/02/14 15:23
総合スコア2283
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
はじめまして。
私も中途採用でこの業界にきました。
ので、気持ちが痛いほどわかりますよ。焦りますよねぇ。。
他の方と重複する箇所もありますが、私の実装へのアプローチ方法を書きました。
ご参考までに。
他の方も書かれていますが、機能の目的を理解する。
これに尽きます。
ただ、私自身はそこに行き着くのが遅かったのでいろいろ試しました。
例えばソースをエクセルにコピーしてA3で紙出ししてソースを読みながらA3の紙にひたすら赤ペンで書いたりしてました。(よくやりますよね笑)
で、あるときそのA3の紙がプログラム設計書だと気付き、プログラム設計書を読んだところ
「全体がわからない。。」という課題が出てきて、結果、上流の設計書を見るようになり
「で、結局この機能は何がしたいのだ!」という疑問(というかイライラ)にぶち当たり要件定義を見るようになった感じです。。。
そこで初めて、「ユーザーの要望とそれを実現する機能」がつながり
コードから読むより、目的を理解するほうが
早くて正しい
という答えに行き着きました。
ちなみにですが
改修するのにもコードが理解できていないので、時間がかかってしまいます。
これはご自身が抱えられている課題なのでしょうが、個人的にはすばらしいな、と思いますよ。
「なんとなくコピペしたら動いた、だからOK」とか言ういう人もいますしね。。ぞっとしますよね。
まだ4ヶ月。
今はまだ時間がかかるかもしれませんが、仕事に慣れていく時期だと思います。
即効性のある手法はなかなかなく焦る気持ちもあるかもしれませんが、一歩づつ積み重ねていただけたらと思います。
がんば。
投稿2017/02/19 03:24
総合スコア76
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/02/22 12:24
2017/02/23 01:58
退会済みユーザー
2017/02/23 11:33
0
ほとんどのプログラムの場合、
・大きな流れを制御する処理
・その処理から呼ばれる細かい処理
の2つで構成されていると思います。
JavaでWebとのことなのでそれにあわせて考えると、前者は、あるページの更新処理、などですかね。
後者は、その更新処理の中から呼び出す細かい処理、例えば入力チェック処理とかですね。
どちらもその処理には目的があります。
それはある程度メソッド名(関数名)から推測できるはずです。
(メソッド名と中身があっていないようなソースは糞ですね(すみません))
なのでその目的を達成するために、どのようなことをしているのか、という観点で見ていくといいかなと思います。
投稿2017/02/15 00:05
総合スコア16998
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/02/15 13:24
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/02/14 21:30