21
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

コピペエンジニアあるある~人のふり見てわがふり直せ

Last updated at Posted at 2019-07-17

はじめに

最近、私のいる開発チーム内にコピペエンジニアが続出してます・・・:sweat_drops:
私個人としては、「コピペ=悪」とは思ってません。
ほぼ毎回ググってるinputStream的なものはコピペでもいいと思うし、コピペしてもらうと、案件内のソースコードに統一性が生まれて保守しやすくなるメリットがあると思います。

だけど、何も考えずにコピペするのだけはやめてほしい:angry:
読みづらい上に、バグだらけなんですもん:droplet:

というわけで、「コピペするなら、せめてこれくらいは意識してよ」って思ってることをまとめてみます。

おことわり

  • コピペの善悪を問いたい記事ではありません。
  • 個人の体験に基づく主観が 大いに 含まれます。
  • 「『あ、俺のこと・・・?』って思ってもらえたら、少しはダメコピペ減るかな」という期待を込めて書きました:sweat_smile:

1.変数名・メソッドがおかしい。

コピペったままなので、(例えば)コピペ元が「tel」だったら「tel」のまま。
本当は「mail」かもしれないのに「tel」のまま。
「とりあえず動けばいい、思ったとおりに動いてほしい」としか考えてない人が多いと思う。
あとで読み返したときに、「なんでメアドを格納する変数がtelなんだ?」みたいになって、めちゃくちゃ混乱する。
メソッド名も同様で、getMail()なのに、なぜか電話番号が返ってくるようなソースをたまに見かける・・・。

2.エラーメッセージなどの定数が間違ってる。

プロパティファイルからkeyコードを使って固定のメッセージを取得するような処理でよく見かけます。
ひどいのだと、日本語でべた書きしてるメッセージすらコピペったままになってて、正常系なのに「エラーが発生しました」になってることも・・・。
※「メッセージの類をべた書きするな」というのは、今回はスルーします :bow:

3.static定数が乱立・増殖する。

とりあえずコピペってくるので、クラス定数とかがなければエラーになっちゃう。
「だったら、定数もコピペればいいじゃん:thumbsup_tone3:」って感じなんでしょうね。
そうやって、各クラスに全く同じ名前で同じ内容のstatic定数が増殖していくわけです。
最初2~3個なら、見つけ次第Enumとかプロパティファイルに押し込むんですが、保守系プロジェクトとかになると増殖しすぎてて、逆に「このまま増殖させた方がいいんじゃないか」って思い始めるくらい:disappointed_relieved:

お願いなので、定数っぽいものをコピペしたくなったら、「どこかで誰かが汎用的に使えるように定義していないか」を確認してください:bow:

4.JavaDocが間違ってる。

JavaDocは、「正式なプログラム仕様書として成立する」もの。
なのに、どこかからコピペってきたままだったり、デフォルトで生成されたままだったりする。
そのせいで、実際のソースの動きとJavaDocの日本語がずれていることがしばしば・・・。
手前味噌ながら、JavaDocとコメントの違いはこちら :arrow_down: を見て下さい。
:link: 【Java】コメントの種類と書き方
数か月後にそのJavaDoc見て「誰だ、こんな嘘っぱち書いたやつは!」って多分自分で言いますよー!!

5.動作は理解してない。

当たり前のように「なんか、こう書いたら動きました」って言うよね:cold_sweat:
でも、それ「書いて」ないから。「コピペした」だけだから。
このタイプは、「これって、なんでこんな書き方したん?」って聞くとフリーズすることが多いですね。

6.バグが残ってても気づかない。

前述の「5.動作は理解してない。」と同様です。
理解してないから、バグも一緒にコピペっても気づかない:disappointed_relieved:
あと、「コピペ元だとそれでいいけど、コピペ先ではその仕様は間違ってるからバグになってしまった」ってこともあります。

お願いだから、ちゃんと理解してください。ホントに・・・。

7.エラーが出たときに最初に思うのは「コピペミスしたかも?」で、エラーメッセージは見ない。

エラーメッセージ見たほうがよっぽど早いのに、彼らはコピペミスを疑って、真っ先にコピペ元ソースと見比べに行きます:disappointed:
たいていの場合、しばらく悩んだ後で「あの・・・。ここのソースがエラー吐いてるんですけど、コピペ元とは寸分の狂いもないんですけど・・・」って質問しにくるパターンが多い気がします。
とりあえず、エラーメッセージ読んでから質問しに来てください・・・。

また手前味噌でアレなんですが、エラーメッセージの読み方の参考になれば幸いです:point_down_tone3:
:link: 【Java】エラーメッセージをちゃんと読んでいますか?【スタックトレースの読み方】

おわりに

最初に書いた通り、「コピペ=悪」じゃないと思ってるので、コピペ自体はしてもいいと思ってます。
コピペすることで、先人たちのよいソースコードも勉強できると思うしね。

だけど、コピペであっても「作ったのはあなた」です。
うっかりバグを仕込んでしまったら、それは「あなたのせい」だと思います。
要は「自分の書いたコードに責任を持てよ」ってことです:thumbsup_tone2:

とかなんとかエラソーなこと書きましたが、自分もうっかりコピペすることあるので気を付けたいなぁと、改めて思いました:sweat_smile:

21
9
11

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?