なぜコピペコードがダメなのか
はじめに
この記事は駆け出し、伸び悩みエンジニア向けの記事です。
また、あくまで個人的見解であり、特定の人物や団体、プロダクト等に対するものでもありません。
強いて言うのであれば、今これを読むあなたに向けたものです。
この記事では、コピペコードがダメだと思われる理由を挙げた上で、そのコピペコードを自分のものにする方法を書いていきたいと思います。
コピペ常習犯、伸び悩みエンジニア必見です。
TL;DR
結局書くことになるんだねこれ。
文章の推敲能力の低さに感動。
- コピペコードは思考停止するからダメ!
- コピペ後、リファクタリングしてみましょう
- そのリファクタリングは変数名などの変更から始めてみましょう
- そうすれば自然と理解が深まります
- それやってみて無理なら、諦めて動作保証を取りましょう
ここまででもっと読みたいなと思えたら、読み進めてみてください。
コピペコードがダメな理由
ダメな理由をいくつか挙げたいと思います。
- 思考停止が起きてしまっている
- 動作保証が取れていない
- バレたときダサい
- バレたときクソダサい
クソダサいのはいいけどね、個人の感情だし。
問題は1つ目のところです。(2つ目も問題ではありますが...)
わからないから調べて、それっぽいものが出てきて、コピペしてみて、
動いた!できた!!やったぜ!!!
いや、できてね―よ!!
できてね―から!!!!
コピペコードを使うと、動いた時点で「できた!」と思ってしまうのが問題です。
完全に思考停止ですね。
ちゃんと読めばいいだけじゃん
と思う。
が、それをさせないのがコピペコードの悪いところ。
これはある意味優秀なエンジニア達と、技術ブログ文化の功罪と言っても過言ではないと思います。
今どき、自分が今抱える問題は調べれば出てきます。しかも簡単に。
これはとても良いことであると同時に、強い向上心がないと、
- どこがわからなかったのか
- なぜこれで抱える問題が解決するのか
というところまでなかなか到達できません。
多くの技術ブログでは、言葉で、コードで、サンプルプログラムで、とても丁寧に説明されているがために、それをなんとなく見ているうちにわかった気がしてきてしまうのです。
見ているうちにね。
ちゃんと読めばいいんだけどね。
コピペコードを自分のコードに変える簡単な方法
名前を書き換えてみる
結論から言うと、
クラス名・変数名等をすべて書き換えてみましょう(ドヤァ)
はぁ?って思った人。これマジで大事。
「リファクタリングしましょう」ということなんですが、まずは各種名前を変えるというところから始めるのがいいと思います。
というのも、多くの公開されたコードは、少なくともあなたっぽい変数名やクラス名はつけられていません。
ですので、コピペコードを入れると急に命名方法の雰囲気が変わり、バレます。
しかも思考停止してます。
ここで、名前の書き換えをすることで、自然とコードを読むことになります。
そして、名前をつけるには最低限の理解する必要があるので、
- 何故こういう名前がつけられたのだろう
- 自分がつけるとしたらどうなるのだろう
と、思考が再開します。
これだけでそのコピペしたコードへの理解は一気に深まります。
また、「この処理いらねーわ」とか、「こういうケースが網羅できてないな」とか感じて、添削しているうちに自分の書いているプログラムにマッチしたものになってきます。
結果、コピペしてきた時の状態が一番良かったわみたいなのはよくあります。
ここまでやれば、全く同じ内容になってしまったとしても、自分のコードになっていると考えて問題ないでしょう。
ちゃんとやってみて、理解不能だったらどうしてくれんだよ
うん、諦めればいいと思うよ。
というのも、もしそこまでやってみて無理なのであれば、あなたの技術不足以外の何物でもありません。
だとすると、選択肢は2つ
- 理解するのは諦めて、今回はコピペコードで恥ずかしさを受け入れる
- そもそも理解できない技術力を必要とするプロダクトを作るのを諦める
2つ目は極論なので言ってみたかっただけです。
ですので、恥ずかしいのは受け入れて、「動作保証が取れてない」ってところは最低限解消しておきましょう。
あとは、コメントを残しておきましょう。
理解できなかった悔しい気持ちをコメントでぶつけましょう。
めっちゃ試験しにくいコードだったらどうしてくれんだよ!!
それは知らん!!!
まとめ
コピペから始めること自体は悪くないです。
でもそこには思考停止のリスクがあります。
コピペしてからリファクタリングしてみると開ける道があります。
そこで感じた違和感が、あなたを成長させる鍵になるはずです。
EOF
次こそはちゃんと技術ブログ書く。
と思いながら、良いコメントの書き方例について書きたくなってきた。
Discussion