Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

行末コロンを新たな行に書くのは認めるべきか

Discussion

Closed

この質問は同僚を傷つけるものだったので、問題文を抹消しました。
Qiitaの仕様上、質問自体を削除することができませんが、何とぞよろしくお願いいたします。

0

私は一行野郎です。(SQLも)

var attendedAverageAge = students.Where(student => student.IsAttended).Select(student => student.Age).Average();

こんな書き方もありでしょうか?

var attendedAverageAge = students.Where(student => student.IsAttended)
    .Select(student => student.Age)
    .Average()
;

矯正した方が転職時もよいと思う

pythonのようにインデントを強要する言語以外ならどちらでもよいと、私は考えます。

但し、書法規約を順守する企業もあること知っておいて下さい。

尚、書法規約はコードのレビュー、修正及び再利用の効率から生まれましたが、
クラスライブラリー、コードレシピの活用する時代ではコードの修正率及び再利用率が低く、余り目くじらをたてなくとも良いのでは?

1Like

あなたと同僚さんとどちらかを採れと言われたら同僚さんを採ります。
差分とか見やすくなるのに、そういうメリットを分かる人と分からない人の違いは大きいです。

2Like

あなたが組織に属して組織で開発を行っているなら、組織内で話し合ってコーディングルールを決めて、あなたも同僚もそれに従ってはいかが?

1Like

実害は無い

ならば別に良いのではないでしょうか.
しかしながら,この記述が何かしらの

書き間違い

に見えてしまう,ということであれば,そのことを害と呼べるのかもしれません.
「その書き方だと,こういう間違いなのではないか? と見えてしまうじゃん?」という意見を伝えてみてはどうでしょうか.

個人的にはそれよりも

一般的にはこう書く

という話の方が気になります.
こういうのが どこかで(?)「こう書くんだぞ」みたく広く示されているのですか?
私はそういうのを存じ上げないので,改行して並べるならば「.の位置が揃わないと気持ち悪い」とか思ってしまうのですが…異端ですか?

//何故だか不明だけども . の位置をインデントで揃えたい.
var attendedAverageAge = students
    .Where(student => student.IsAttended)
    .Select(student => student.Age)
    .Average();
1Like

クローズ後ですが個人的な意見をいくつか。
「一般的には」について、例えば有名なlinterやフォーマッターで「セミコロンを別行にする」といった設定項目が無ければ、一般的ではないという意見の根拠になりそうに思います。
調べてはないですが、少なくとも私はそのような設定を見たことはないですね。

フォーマットどうするか問題はきのこたけのこよろしく宗教戦争でしかない場合も多いので、
可能であればlinterやフォーマッターを導入してプロジェクト内で強制し、フォーマッターで設定できる範囲内で議論するぐらいが落としどころかなと思います。
(議論したログは残しておきましょう。後から来た人が同じ議論をしなくても良いので)

ちょっと話が逸れますが、SQLとか一部の関数型言語でコンマを行頭に持ってくるという文化もありますね。
(コンマの書き忘れ、消し忘れ防止になる)
後ろに書くと思ってたものを前に書く場合も意外とあるようです。

SELECT id,
    name,
    age,
    gender, -- 後ろコンマだと、一番下のカラム消したときにコンマを消し忘れるときがある
    -- address
FROM hoge;

SELECT id
    , name
    , age
    , gender
    --, address -- 前コンマだと、一番下のカラム消すだけでよい
FROM hoge;

Elmのフォーマットは初見だと結構気持ち悪かったですが、慣れてくると単語の頭や記号が揃って気持ちよくなってきたりします :smile:

type Gender = Male | Female

type alias Hoge =
    { name : String
    , age : Int
    , gender : Gender
    }
1Like

Your answer might help someone💌