unotoviveのメモ

あくあまで個人の見解です。

TSLintのすゝめ

この記事は、CPS Lab Advent Calendar 2018の22日目の記事です。

adventar.org

21日目の記事はこちら

aj1m0n.hatenablog.com

突然ですがみなさん。TSLint、使っていますか❓❓

どうも、フロントエンドをゆるゆるやっているおとべです。

私はTSLintを使っています。

 

本日はLint大嫌いで見たくもなかった僕が1年でLint大好きになった理由と、

プログラミング初心者ほど勇気を出してLintを使ったほうが良い話をしたいと思います。

※この記事は個人の見解でありポエムなのでLint死ね、と言うガチ勢の方はそっとタブを閉じてください。

Lintとは❓

lint とは、主にC言語ソースコードに対し、コンパイラよりも詳細かつ厳密なチェックを行うプログラムである。

  • 型の一致しない関数呼び出し
  • 初期化されていない変数の参照
  • 宣言されているが使われていない変数
  • 同じ関数を参照しているが、戻り値を使う場合と使わない場合がある[疑問点]
  • 関数が戻り値を返す場合と返さない場合がある

など、コンパイラではチェックされないが、バグの原因になるような曖昧な記述についても警告される。

そうだったんですね!C言語用だったのは初めて知りました。

今回はTypescriptで使用するLint、TSLintについての話をします。

TSLintは主に括弧やスペースの使い方などのスタイルを統一したりするのに役立つツールです。

 

具体的な例を紹介すると、

f:id:unotovive:20181222233618p:plain

例えばこれはクオーテーションはを使わないでに統一しましょうというルールに基づいて警告が出ています。

なぜLintを使うのか

コード位自分の好きに書かせろ。

はい、全くその通りだと僕も思います。

ではなぜLintを使うのか?

自身のコードを規制することが出来るからです。

いや、だから好きに書かせろと。

しかしTSLintでは結構自由にルールの設定が可能です。

自分の好きなようにルールを決めたとしても、それを守りコードを書くことでコードに可読性、統一感が生まれ、きれいなコードが出来上がります。気持ちいい。

またTSは言語としての硬さ故にそんなに恩恵を感じませんが、潜在的なエラーもつぶすことが出来ます。

 

はじめてLintを入れた僕

既存のプロジェクトに初めてLinterをインストールした時の僕は結果的に30分後にそのプロジェクトからLinterを削除しました。

エラーしかでない。その数、数百個。

途方にくれました。直しても直してもエラーが出る。

途中でLintのエラー解消を投げ出すもLintのエラーが多くて普通のコンパイルエラーが見えない。。。。

もう二度とつかわないと決心しました。

仕事で使うようになって

現在のバイト先で僕はTypescriptを書いています。

しかしここは企業。ビジネスプロダクト。

当然のごとくLinter付きの環境構築をしました。

うっへぇ~~~と正直思っていました。

しかし

つらかったのは意外にも最初の数日だけでした。

理由としては、既存のコードはキレイにLint準拠している+後述のPrettierのおかげもあり、自分が今書いているところだけある程度気をつければしっかりとしたコードが出来上がるという状態だったからです。

そして

そのまま慣れて、現在ではほぼLint準拠のコードを手が勝手に書き、逆に準拠していないコードを見るととても気持ち悪く感じるようになりました。

少し慣れる時間が必要なだけで、キレイで可読性の良いコードが書ける。これは特に初心者にとってはとても重要なことなのではと思います。そしてなにより気持ちいい

なので是非、既存のプロジェクトに導入するのはハードルが高かったとしても、新しく何かを作り始める時などには是非導入してみてはいかがでしょうか?

 

おまけ:Prittier

Lintはコードの自動補正もしてくれるのですが、弱いです。

それを補ってくれるPrittierを入れるとセーブするだけでLint準拠になったりするので最初はとても便利です。お勧め。