Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@Gab-km
Created March 18, 2013 08:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Gab-km/5185800 to your computer and use it in GitHub Desktop.
Save Gab-km/5185800 to your computer and use it in GitHub Desktop.
「F# のインデントガイドライン」を読んで、自分のインデントルールを書いてみた。

「F# のインデントガイドライン」に寄せて

今朝、 F# のインデントガイドライン という記事がアップされてました。大変興味深い内容だったんですが、ちょっと時間がなくて反応ができなかったんで、今やってしまおうと思います。

今回の概要としては、単純に「僕はこんなインデントルールでやってるよ!」という差分を紹介しよう、というものです。そのため、思想の一致を見るルールについては特に取り上げないこととします。

インデントの基本ルール

いきなりですが、僕は 4 スペースインデント派ですw この節は、それ以外に僕と意見が異なるところはありません。

if式

複数行の if 式であれば、僕は次のように書きます。

if x = 0 then "zero"
elif x < 0 then "negative"
else "positive"

…キモいですか、そうですか。あ、 @kos59125 さんみたいなルールで書くこともあって、それは then 以下が単純かそうでないか、という違いですね。

パターンマッチ

パターンマッチ、僕は次のように書きます。

match x with
| 0 -> "zero"
| _ -> "not zero"

match .. with とインデントを合わせるスタイルです。そのため、

match x with
| 0 -> 0
| x when x < 0 -> -1
| _ -> 1
|> printfn "%d"

のように、パイプライン演算子に紛れて見えるかもしれません。それでさえも美しく見える病気の^H^H^H僕には特に問題ありませんが、あまりこういうコーディングにならないようにしている、というのもひとつのスタイルかもしれません。

function 式については、あまり僕がこれを書くことが多くないので、サンプルを集められませんでした。@kos59125 さんのように書くこともあれば、

let rec fac = function
| 0 -> 1
| n -> n * fac (n - 1)

というスタイルで書くこともあります。どちらかと言うと、@kos59125 さんスタイルが多いのかもしれません。

判別共用体,列挙体

判別共用体の書き方では、僕は次のように書くことが多いです。

type Verbosity =
    Quiet | Normal | Verbose

「何でやねん」「それ1行でおk」と言われそうですが、これ自体にそんなに意味もありません…orz

まとめ

一貫性のあるルールはコードを後から読むときや、他の人に読んでもらう時に良いものです。一歩進んで「他の人にも読みやすい一貫性のあるルール」を採用したいものですね。本当にごめんなさい。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment