日本語版
最新ニュース
企業

作家のルビー

プログラマ全般は、スタイルに対して常に懐疑的なようです。 そして、私は、コーディネートされていない服を着たり、ポケットプロテクターを使用したりするオタクのステレオタイプについてだけ話しているのではありません。 しかし、広義の美学におけるスタイル。 多くの人は、何かがどのように見えるかさえ重要であるべきだという考えに対して根本的な反対を抱いているようです。 どういうわけか、そのような焦点は、それがあるべき場所、つまり本質と矛盾しています。 これは、lint コードに関する議論で非常に明白です。リンティングとは、ソース コードに一貫したスタイルを適用するための用語です。 フォローするように Strunk & White の文法ガイドライン 散文の場合は、lint プログラムによって自動的に適用されます。 これは長い間存在していた手法ですが、準備されたすべてのプル リクエストに対してテストを実行し、リンティングを実行するクラウドベースの継続的インテグレーション セットアップの出現により、より広範に採用されるようになりました。Go などの一部の言語には、 組み込みリンター、言語設計者によって設定された普遍的なスタイルを適用します。 それは最も全体主義的なアプローチです。 コンパイルエラーからわずか 2 フィートのところで、プログラムがどうあるべきかに関する法令。 それはちょっと気に入らないんです。を思い出させる ニュースピーク、オーウェルの 1984 年の新しい INGSOC 言語です。邪悪な政治的意図のためではなく、冗長な用語や曖昧さ、センスのないミニマリスト言語を追求しています。 ヘミングウェイとディケンズ、トールキンとローリングなど、すべての小説が同じスタイルで書かれていると想像してみてください。 散文の色合いが 1 つしかない場合、英語を楽しむのは非常に灰色です。コードは散文ではないという反論がすでに聞こえてきます。 コンパイル対象は想像力ではなくコンピューターです。 ああ、あえて違いますか。 私にとって最高のコードは、まさにそれ自体の詩の形式であり、スタイルはそのような表現に不可欠な部分です。 そして、Ruby…

作家のルビー

1708299215
2024-01-04 13:19:39

プログラマ全般は、スタイルに対して常に懐疑的なようです。 そして、私は、コーディネートされていない服を着たり、ポケットプロテクターを使用したりするオタクのステレオタイプについてだけ話しているのではありません。 しかし、広義の美学におけるスタイル。 多くの人は、何かがどのように見えるかさえ重要であるべきだという考えに対して根本的な反対を抱いているようです。 どういうわけか、そのような焦点は、それがあるべき場所、つまり本質と矛盾しています。 これは、lint コードに関する議論で非常に明白です。

リンティングとは、ソース コードに一貫したスタイルを適用するための用語です。 フォローするように 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
たとえそれがほとんどのプログラミング言語の主流であるにもかかわらず、「そうでない場合」の表現は不器用であると私はいつも感じてきました。 しかし、Ruby では次のように書くこともできます。
def ensure_privileged_access
  redirect_to root_url unless person.admin?
end
これを詩と呼んでいいのかわかりませんが、読むのがはるかに楽しいと思います。 そしてそれはただの一文です。 それらのいくつかを段落 (メソッド) にまとめ、次にエッセイ (クラス) にまとめれば、すぐに 1 冊の本 (システム) が完成します。 それがどのように書かれているかが重要です。

おそらく、より従来的な文字通りのスタイルを好む人もいるでしょう。その好みを lint ルールでエンコードできます。 彼らが私に彼らの文体の好みに従うことを強制しようとしていない限り、私はそれについて全く問題ないと思います。

これがリンターに関する質問の核心になります。 これらは、作成者やチームが強制するための優れたツールだと思います。 彼らの 一貫性のあるスタイル 彼らの コードベース。 これが、RuboCop と巧妙に呼ばれるデフォルトのリンターを Rails の次のバージョンで出荷する理由です。 私や他の人があなたのコードベースをどのようなスタイルで書くべきかを強制することはできませんが、あなたが自分のスタイルを見つけて強制することはできます。

ただし、誰もがまだ個人のスタイルやチームのスタイルを確立しているわけではありません。 私が培ってきた好み 過去 20 年間、37signals のチームとともに数十万行の Ruby コードを書きました。 それがおまかせメニューです。 しかし、これは実際には、Rails プログラマやチームが独自の感性を開発するための出発点にすぎず、感性がどうあるべきかについての恒久的な布告ではありません。

それが私にとってスタイルの本質であり、常に独特なものです。 誰もがいつも同じだったら、スタイルについて話すことすらないでしょう。 Ruby は非常に豊かで表現力豊かな構文を提供してくれるため、考えられるすべてのパスを 1 つの事前承認されたトレイルに絞り込むのは非常に残念なことです。 Rubyはライターのためのものです。

#作家のルビー

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。