プログラムを組んでいるとき、ソース内或いは、ファイル間で似たような記述をすることがあります。
そのようなときは、コピペすることで作業効率が上がるのですが、勉強のためにあえてコピペせずに前に記述したソースをすらすら書けるのか試すことがあります。
しかし、ときどき記述できない時があります。なので前に記述したソースをコピペするわけですが、その書いたソースの意味すら分からなくなることがあるのです。
記憶喪失というと大それておりますが、自分で書いたはずのソースをもう一度じっくり一つ一つ見直すことで、漸くああこういうことがやりたかったのだな、と理解します。
もちろん、ソース一つ一つに邪魔化もしれませんが、注釈をいれてもそのときは、記述しているソースで何をやりたいか理解したうえで書いているので、注釈を読んでも、疑問符が浮かぶことさえあります。
これは、経験でなくなるものなのか、それとも然るべき病院にいくべきなのか。いったいどうなのでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答13件
0
こんにちは。
その書いたソースの意味すら分からなくなることがあるのです。
自分で書いたはずのソースをもう一度じっくり一つ一つ見直すことで、漸くああこういうことがやりたかったのだな、と理解します。
注釈をいれてもそのときは、記述しているソースで何をやりたいか理解したうえで書いているので、注釈を読んでも、疑問符が浮かぶことさえあります。
あるあるです。半年くらい前に書いたソースなどは特にその傾向が強いです。
自分で書いたのに意味不明なコメントが時々あるのですよ。1から10まで全部書いていたら良いのでしょうが、ついついその時に気になっていたことだけを書くものだから、気になっていたことがなんだったのか忘れてしまうと意味不明です。ないよりはかなりましですが、完璧には程遠いのが実態です。
3年くらい前に書いたソースなど自分が書いたという事実さえ思い出せないこともありました。まだ若い頃だったのでちょっとショックでしたけど、大量にソースを書いているとしかたがないことと思っています。
何も知らない人に対して説明するつもりでコメントを書いておけばOKなのですが、なかなかその余裕を持つことができないのも事実ですね。つまり、短時間で的確なコメントをかけるようになることが解と思いますので、これは経験値ではないかと思います。
投稿2016/08/25 05:51
総合スコア23272
0
まず最初に言っておきたいのは、
人間なら忘れて当たり前です!
仕事で使わない人は
学生時代の数学や英語の本が読めない、
というのはよくあることです。
忘れるのがまちがいではありません。
忘れてもいいように書かないのがまちがい。
コードを読みやすく書くのは当然として、
リファクタリングする、テストを書いておく、
コメントやドキュメントやUMLなどの図を書く、
というのも後で理解するのに効果的です。
正直、書くときは面倒だと思いますが、
それをやらないと技術的負債になります。
コードを読みやすく書く上での心構えがあります。
機械が読むことを想定して書くと、
動けばいいからと書きやすく書きがちです。
人間が読むことを想定して書くと、
書くのは大変ですが、読みやすく書けます。
ひとりで書いても後で自分が読むわけなので、
機械ではなく人間に対して書く
というのは常に意識しておきたいものです。
投稿2016/08/29 17:09
総合スコア5592
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
我々が日頃扱っているコードの量を考えると、コーディングの内容や詳細な仕様を暗記するなんて人間業ではありませんし、そんなことにプログラマの脳みそを消費するのはナンセンスです。
だからと言って、コメントに詳細な内容を残すというのも賛成できません。私はコメントについて、以下の様な指針で入れるようにしています。
- 処理内容(ex.
// すべての yyy に対して zzz 処理を行う
)をコメントに書かない(できるだけ、関数名や変数名を工夫して処理内容がわかるようにする) - 使っているライブラリやフレームワークの仕様でコードが歪んだ場合にその内容をコメントに残す(ex.
// 普通なら xxx ってコーディングすると思うけど、 yyy 関数の仕様で zzz とはならないので注意
) - お客様の事情などで論理や概念モデルが歪んだ場合にその内容をコメントに残す(ex.
// ここで、 xxx を入力した場合にエラーになるのは使いづらいというクレームがあり、 xxx は特別に許容することにした
)
短く言うと情報量があること(意外性が高いこと)だけをコメントに残しましょうということです。コードを読めばわかることをコメントで入れると、エディタ上の1画面で表示できるコードの量が減り、邪魔なだけです。OSS育ちの人なら余分なコメントを入れたりしないと思いますが、昔のメーカー系のソフトウエア会社の人たちだと、コメント信者の人が多くて閉口します。
投稿2016/09/02 00:26
総合スコア3401
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
若年性健忘症とかストレスによる健忘症とかはマジであるので
心配であれば一度病院に行かれた方がいいと思います
それほどでもなければ
「過去の俺が今の俺を超えた」と思いましょう
また
- コピペしたコードの解らなかったところを解りやすく書き直す
- 1行に変数を多用している場合は複数行に分割する
- 変更しても解りにくそうな時はなるべく短いコメントで補足する
- コピペするときはコメントも一緒にコピペ
これを習慣として行い
if(a == b){//ぶんき、aとbがおなじかくらべているらしい
とかコメントしそうになったら病院へ行きましょう
(その時は手遅れかもしれませんが...)
投稿2016/09/10 13:38
総合スコア284
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
要するに
書いた直後は意味がわかっているが、
書いてしばらくしてから読むと意味がわからなくなるということですね。
読みやすいコードを書きましょう。
変数名や関数名にaとかbとかtmpとか適当なもの使ってませんか?
例えば、
php
1$y = (( $x % 4 ) == 0 ) and (( $x % 100 ) != 0) or (( $x % 400 ) == 0);
php
1$isLeapYear = (( $year % 4 ) == 0 ) and (( $year % 100 ) != 0) or (( $year % 400 ) == 0);
まあお決まりのパターンなので上のコードでも閏年判定だとはわかりますが、
下のほうが何がしたいかがよりわかると思います。
「何をしているのか」は名前の工夫でどうにかなります。
(これをコメントで書くと、肝心のコードで手を抜きやすくなるのでおすすめしません。
大きなまとまりの要約程度にしましょう。)
しかし、「なぜその方法をとったのか」はコードを見てもわかりません。
わざわざトリッキーな方法を使わざるを得なかった時はそれをコメントに残しましょう。
投稿2016/08/25 06:04
総合スコア13528
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
後から見て分かるコメントが書けるようになれば解決するのではないでしょうか。
考えて、工夫して、を繰り返さなければ時間だけ過ぎても改善(成長)はしません。
コメントを書く時に「知らない人がコレをみて理解できる」ように情報をそこに明記するような心がけ(配慮)が不足しているのだと思います。
書いてる時に自分が知ってるから、と言うのは書いてる自分の事しか考えていないからです。
読み手の事を考えて書くようにしてみてはどうでしょうか。
投稿2016/08/25 05:24
総合スコア2160
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
内容を読んで思った事がありましたので私見ですが参考になれば。
まずはじめに思ったのが慣れたら無くなるのかもしれないなぁと思いました。(これは人によるかも)
ここからは自分がやっている事ですね。
・元の注釈にその時(書いている時点)は分かっていてもあえてやりたかった事等も記述する。
・一定周期でそのコードを見直す(確か1週間後くらいには記憶量が半分程度になるとかいう記述を見たので)
これは思考放棄かもしれませんが…
・じっくり見れば分かると考え、パッと見で分からない事を気にしない
それでも心配だと思うのであれば病院に行って聞くのもありかもしれません。
(個人的に自分は行きたくないとは思いますが。)
投稿2016/08/25 05:18
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。