[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ひよこも会社で初めて後輩を持つことになり、後輩のコードをレビューする機会も出てきた。今、会社で私が働いている部門はあまりコードを書かない部門だが、たまに書く。そこでひよこが挙げた指摘事項をつらつらと並べておく。
かつては JavaScript では var を変数の宣言の先頭につけて変数を宣言してた。しかし、現在は var の代わりに let と const を使うらしい。関数スコープである var とは違い let も const もブロックスコープで変数を宣言できる頼れる奴だ。しかし、const は不変な変数 (つまり定数) として変数を宣言できる。
const hiyoko = 'piyopiyo'; hiyoko = 'hiyohiyo'; // ここがエラーになる。再代入は許されない!
変数の値が変わらない、ということはソースコードを追うときに考えることが減る、ということだ。変数のスコープを狭くすることと、変数の値を変えないということはメンテしやすいソースコードを書くために便利な手段だ。
HTML の要素に onclick 属性を持たせるなどすればイベントのバインドができる。しかし、イベントのバインドは JavaScript 側にまとめて記述する方が以下のような面でありがたい
SWEET v20180317 を書いていて詰まった点にチャットになぜか二重投稿してしまう、という現象があった。この機能は次のような手順でやっていた。前提として以下のコンポーネントがある。
これらは次のように動作する。
私がやらかしたミスは 2 の子コンポーネントがイベントをキャッチするためのイベントバインドを二重にやっていた。つまり以下のようなことをやっていた。
$('#childComponent').on('grandChildComponent-event-sendChat'. sendChatFunction); $('#childComponent').on('grandChildComponent-event-sendChat'. sendChatFunction);
これで sendChatFunction が二重に動作してしまい、チャットが二重送信されていた。
なお、当初は孫コンポーネントが二重にイベントを発火している可能性を疑っていた。しかし、各イベントにユニーク ID を試しに振ってみたところ、どうもユニーク ID が二重イベントの双方で一致するので二重発火ではなさそうだな、と気づいたのであった。
くだらないミスだけれども、同じようなことで「あれ?」となった際の観点として。
スケジュールを表示したり編集したりする何かの使い方ガイドを書いた。
マークダウンで書くとこういうのが簡単に作れるのが楽しい。
シェルスクリプトでちょっとずつ待ち時間を延ばすの JavaScript 版を書いた。どどんとふの混雑に起因すると思われる接続失敗エラーが SWEET で多発したからである。
ソースコードはこんな感じ。このコードだと再実行までの待ち時間は1秒, 2秒, 4秒……と増えていく。汎用的な Utility にするとすれば、この辺も設定できると嬉しい。
複数の場面で使いそうなので書いてみた。動作サンプル https://shunshun94.github.io/shared/sample/HiyokoScheduler.html
ドラッグ/ドロップで予定を編集したりできる。スケジュールの追加とかも一応できる。
こういうのもちゃんとドキュメント書かないといかんなぁ……