#はじめに
ここは後輩に指導?助言?したコードレビューをつらつらと書いていたり。
とりあえずJavaScript編を適当に。もっといい実例とか修正先あったら教えてください。
前回の奴:後輩にレビューで突っ込みを入れた話 JavaScript編
##おことわり
自分も大それたコーダーではないのでいろいろやらかします。
現場的にはリードプログラマーに仕上げられてしまった程度です。たぶん実態はleadじゃなくてreviewのためのread。
「しょにょX」って書いてるのは笑い飛ばす意味も含めて軽いノリにしてるだけです。
##君何も考えずにコピペしてるよね編
鳥じゃないんだから最初に見たコードを妄信的に信用しちゃ駄目よ
###しょにょ4
jQuery.expr[':'].Contains = function(a,i,m){
return (a.textContent || a.innerText || "").toUpperCase().indexOf(m[3].toUpperCase())>=0;
};
処理対象は必ず日本語(全角かな)なので、わざわざキャラをケースセンシティブにする必要が皆無。
見た瞬間英語サイトからのコピペが原因だろうなと悟ったのだけど、この後輩英語苦手なの知ってるので頑張りだけはとりあえず買うことにして、まずはさっさとafter(書くまでもない)。
jQuery.expr[':'].Contains = function(a,i,m){
return (a.textContent || a.innerText || "").indexOf(m[3])>=0;
};
さて、原因の方だけど、とりあえずコピペ元はここだったらしい。
フォームにテキストを入力してリアルタイムに表示を絞り込む - jsdo.it
あ、結局日本語なのね。そして2014年…いやまぁ、この人がスクラッチから作ってればまだ文句でなくコメントとかプルリクという言い様もあるんですが、どうせ英語からのコピペだろうと信じて疑わなかったので(←)、同じ内容で検索したらやっぱり出てきた
簡単なjQueryコードでリストメニューにフィルタリング機能を加える - かちびと.net
ってこっちも日本語、そして2011年。前者と内容完全一致な上、なぜか二行だけ入ってるタブインデントまで一致してるので、2014年の奴は言い逃れのできないコピペ盗作。こいつの倫理観どうなってんだ…(ついでに「このインデント透かしいいな」と思ったのは内緒)
さらにここからは大元のリンクが貼られているみたいで、そっちを見る。
jQuery list filtering – Papermashup
あー、やっぱり大元は英語でしたかー。予想通りの場所には行きついたんですが、途中過程にいろいろ思うところがあったのもあって記録に残しておくことに。
#起こった原因
どう見ても「コピペしたら動いたからそれでいいや(思考停止)」パターンです。本当にry
##指導内容
とりあえず「動いたコードのコピペ元がこうだったから」ではなく、コピペした後に動作のトレースを行うよう指導。
ついでに、生まれたての雛鳥の如く最初に見たコードを信用するのではなく、そのコードの「根本」まで追いかけておくようにと言っておきました。
#つづくの?
続くのは本意ではないですがネタが出てしまったら(あと仕事が忙しくなかったら)書きます。