1708299215
2024-01-04 13:19:39
リンティングとは、ソース コードに一貫したスタイルを適用するための用語です。 フォローするように Strunk & White の文法ガイドライン 散文の場合は、lint プログラムによって自動的に適用されます。 これは長い間存在していた手法ですが、準備されたすべてのプル リクエストに対してテストを実行し、リンティングを実行するクラウドベースの継続的インテグレーション セットアップの出現により、より広範に採用されるようになりました。
Go などの一部の言語には、 組み込みリンター、言語設計者によって設定された普遍的なスタイルを適用します。 それは最も全体主義的なアプローチです。 コンパイルエラーからわずか 2 フィートのところで、プログラムがどうあるべきかに関する法令。 それはちょっと気に入らないんです。
を思い出させる ニュースピーク、オーウェルの 1984 年の新しい INGSOC 言語です。邪悪な政治的意図のためではなく、冗長な用語や曖昧さ、センスのないミニマリスト言語を追求しています。 ヘミングウェイとディケンズ、トールキンとローリングなど、すべての小説が同じスタイルで書かれていると想像してみてください。 散文の色合いが 1 つしかない場合、英語を楽しむのは非常に灰色です。
コードは散文ではないという反論がすでに聞こえてきます。 コンパイル対象は想像力ではなくコンピューターです。 ああ、あえて違いますか。 私にとって最高のコードは、まさにそれ自体の詩の形式であり、スタイルはそのような表現に不可欠な部分です。 そして、Ruby ほど重要な言語はありません。
Python のモットーは長い間、「それを実行するための明白な方法は 1 つ、できれば 1 つだけあるべきである」だったのに対し、Ruby は正反対です。 ほとんどすべてのことを行う方法はたくさんあります。だからこそ、私のような人にとって、Ruby の読み書きは非常に楽しいのです。 著者としてコードを書くよう努める エンジニアとしてよりも頻繁に。
最も基本的な例を示します。
def ensure_privileged_access
if !person.admin?
redirect_to root_url,
end
end
def ensure_privileged_access redirect_to root_url unless person.admin? end
おそらく、より従来的な文字通りのスタイルを好む人もいるでしょう。その好みを lint ルールでエンコードできます。 彼らが私に彼らの文体の好みに従うことを強制しようとしていない限り、私はそれについて全く問題ないと思います。
これがリンターに関する質問の核心になります。 これらは、作成者やチームが強制するための優れたツールだと思います。 彼らの 一貫性のあるスタイル 彼らの コードベース。 これが、RuboCop と巧妙に呼ばれるデフォルトのリンターを Rails の次のバージョンで出荷する理由です。 私や他の人があなたのコードベースをどのようなスタイルで書くべきかを強制することはできませんが、あなたが自分のスタイルを見つけて強制することはできます。
ただし、誰もがまだ個人のスタイルやチームのスタイルを確立しているわけではありません。 私が培ってきた好み 過去 20 年間、37signals のチームとともに数十万行の Ruby コードを書きました。 それがおまかせメニューです。 しかし、これは実際には、Rails プログラマやチームが独自の感性を開発するための出発点にすぎず、感性がどうあるべきかについての恒久的な布告ではありません。
それが私にとってスタイルの本質であり、常に独特なものです。 誰もがいつも同じだったら、スタイルについて話すことすらないでしょう。 Ruby は非常に豊かで表現力豊かな構文を提供してくれるため、考えられるすべてのパスを 1 つの事前承認されたトレイルに絞り込むのは非常に残念なことです。 Rubyはライターのためのものです。
#作家のルビー