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

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

ただいまの
回答率

88.03%

コードを自分が書いたかどうか思い出せない状態を予防するには?

解決済

回答 7

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 1,381

score 269

ずっとコードを書いていると、
自分が書いたコードですら思い出せないときがあります。
例えば、一ヶ月ほど前に書いた自分のコードを見ても、
そこに書かれているロジックは分かっても、
自分が書いたかどうかわからない感じです。

このような状態が続くとどういった場面で
不都合なことが起こるのでしょうか?
また、どのような予防を行えばよいでしょうか?
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 7

checkベストアンサー

+5

結論を先に書くと、下記の通りです。
  • 不都合なことが起こるのでしょうか?      → だれが書いたかはあまり重要ではなく、特に不都合はない
  • どのような予防を行えばよいでしょうか? → バージョン管理システムを正しく使うだけ

以下は、補足説明です。

複数人で開発するならば、バージョン管理システム(GitやSubversionなど)を利用することは必須なので、それらを正しく使っている限り、特にコメント等をつけなくても、いつ、だれが、どの箇所をどのように修正したかを正確に追跡できます

バージョン管理システムを使う場合は、必要以上にコメントをつけない方が良いです。
というのは、本来バージョン管理システム側で管理すべきバージョン情報(修正者の氏名や修正した日付など)をコメントにも記載してしまうと、無駄に差分が増えるだけでなく、コメントに表記の揺らぎがあると結局は機械的に検索することは難しくなるので、労力の割には効果が薄いです。

むしろ、たとえ修正した箇所が1行であったとしても、最後にコミットした人がそのモジュール全体に関して責任を持つべきなので、だれが、いつ、どこを、どのように修正したか、ということ自体は、品質担保に関する限りあまり重要ではありません。

そうした情報は、いつどのようにバグが混入したかや、それを検出できなかったのはなぜかなど、いわゆるプロセス改善のためにこそ必要な情報であり、もはや「だれが」という情報は重要ではありません。だれがやっても同じ品質を担保できることが重要なのであり、強いて言えばだれに対してどのような教育が必要かを分析する際に役立つ程度です。

次にコメントについてですが、ポイントは以下の2点だと思っています。
  • 必要最小限の記載に止める
  • 式の意味や、そのような実装に至った理由や経緯など、コードからは読み取れない情報を記載する

過剰なコメントは、以下のデメリットをもたらします。
  • 修正のコストが掛かる
  • 修正漏れが発生すると実際のコードと乖離してしまう
  • バージョン管理上の妨げ(余計な差分が発生)
一方、コメントをいくら詳細に記載したとしても品質担保に直接寄与することはありません。
ですから、コードを読めば分かること、バージョン管理システムの履歴から分かることは、わざわざ記載するまでもありません。

一方、なぜそのような実装になっているのか、という意味経緯が分かるコメントであれば、時間が経過してから、あるいは別の開発者がコードを読む際に大きな助けとなり、影響調査の精度を高めデグレードを防ぐのに直接役立ちます。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+1

バージョン管理のコメントをしつこいくらい細く書くようにしてます。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+1

予防策としては既に書かれている様にソース管理ソフト(SubversionやVSS)等を使用し、
こまめにコミットする事です(コミットするときに面倒でもコメントを残します)

チームで開発している場合でも自分用にプロジェクトを分離して、
こまめにコミットする事をおすすめします。

仕事始める前に全体のソースと差分チェックと最新版の反映を習慣化すれば
大分少なくなると思います。

あとは健康管理と十分な睡眠を取る事が重要です。


投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+1

pi-chanさんに1票です。おっしゃる通りだと思います。

source内のコメントは控え目に要点だけが良いです。PGのメンテナンスコストがかさみます。そして書かれている通りメンテナスもれで騙されてバグにつながります。コメントがあるだけに、ハマるとなかなか抜け出られません。

プログラムの流れは、それを見れば思い出せる程度の大きな枠のドキュメント(仕様:考え方や意味を含む)を(SEが)別に作成しているかと思いますので、そちらを充実させる方が良いと思います。(どうせ納品ドキュメントを兼ねることになりますし)

javadocのようなもので、クラス単位での用途と入出力が分かるようにしておく。source内にもバージョン埋めするので、documentとの差異が明白。メンテ漏れを防ぐ。ずれてたら怪しい。外だしすることで、リファクタリングできる。
後はみなさまのおっしゃる通りバージョン管理・更新の履歴管理でカバーです!

と、書きましたが、javaは苦手です ;-p

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

0

毎日、自身のHDDにコピペ。
これで、自分で書いたどうかわかると思う。

予防策は帰る前にコミットする。

改善策は、「誰のためにものづくりをしているのか」という意識。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

0

私は自分の書いたロジックが“なんで?”って言う状態になります・・・manmanさんより重症^^;
自分特有の言い回し(というかコーディング)なのに何かおかしい・・・
いいように解釈すれば、それだけ成長した。んだろうけど・・・
で、人に説明するときに詰まっちゃいますね。
なので、コードではなく機能(何をしているのか)で覚えるようにしています。Cなどで、関数いっぱいファイルもいっぱいw になると機能ごとに覚えないとパニックになります。
・・・“昨日の私は赤の他人”・・・あまり気に病まなくてもいいんじゃないでしょうか?

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

-1

コメントと時には署名も入れるようにしています。
不思議と自分が書いたコメントなのかは判別できるものです。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

  • ただいまの回答率 88.03%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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