みなさん、こんにちは。
テラスカイの植村です。
Lightning Platform上で開発していると、SOQLを扱うことは多いと思います。
SOQLは後で何度も目にすることになるため、フォーマットを揃えて、見やすく書くことが重要です。
そこで可読性が高く、美しいSOQLのフォーマットを考えてみました。
結論からいくとこんな感じです。二種類考えてみました。
テラスカイの植村です。
Lightning Platform上で開発していると、SOQLを扱うことは多いと思います。
SOQLは後で何度も目にすることになるため、フォーマットを揃えて、見やすく書くことが重要です。
そこで可読性が高く、美しいSOQLのフォーマットを考えてみました。
結論からいくとこんな感じです。二種類考えてみました。
キーワードで右揃え
select Name
, Email
, Account.Name
, Account.Owner.Name
, (select Subject
, Status
, CaseNumber
from Cases
order by CreatedDate desc
limit 1)
from Contact
where CreatedDate = TODAY
and LeadSource = 'Web'
and (Fax != null or Phone != null)
and Birthdate != null
order by Name
limit 100キーワードで右揃え
キーワードで改行
select
Name
, Email
, Account.Name
, Account.Owner.Name
, (
select
Subject
, Status
, CaseNumber
from
Cases
order by
CreatedDate desc
limit
1
)
from
Contact
where
CreatedDate = TODAY
and LeadSource = 'Web'
and (Fax != null or Phone != null)
and Birthdate != null
order by
Name
limit
100キーワードで改行
前者はコンパクトです。SOQLはSQLほど複雑にならないので、このフォーマットでも破綻することはありません。私は普段このフォーマットで書いています。
後者はインデントルールが単純で迷いづらいですが、少し間延びした感じになります。
どちらも重要な部分が縦に並んでいるので可読性が高いですし、エディタで複数行をまとめて編集しやすいです。
お好きな方をお使いください。
後者はインデントルールが単純で迷いづらいですが、少し間延びした感じになります。
どちらも重要な部分が縦に並んでいるので可読性が高いですし、エディタで複数行をまとめて編集しやすいです。
お好きな方をお使いください。
ポイント
カンマは行頭
一般的に末尾に書かれることが多いですが、先頭に書いたほうが記述しやすいですし、継続行というのが分かりやすいです。SOQLに限らず、行末まで見なくてよい形式の方が素早く読めるため好ましいと思います。
キーワードは小文字
一般的に大文字で書かれることが多いと思いますが、大文字の連続は文字として可読性が低いです。小文字で統一すれば迷いませんし、可読性も高くなります。
例外として日付リテラルのみ大文字で書きます(Apexのバインド変数と区別しやすくするため)。
項目ごとに改行
項目名を横に並べて書くこともできますが、可読性, 編集しやすさが落ちます。最初から改行しておいた方がいいと思います。
一般的に末尾に書かれることが多いですが、先頭に書いたほうが記述しやすいですし、継続行というのが分かりやすいです。SOQLに限らず、行末まで見なくてよい形式の方が素早く読めるため好ましいと思います。
キーワードは小文字
一般的に大文字で書かれることが多いと思いますが、大文字の連続は文字として可読性が低いです。小文字で統一すれば迷いませんし、可読性も高くなります。
例外として日付リテラルのみ大文字で書きます(Apexのバインド変数と区別しやすくするため)。
項目ごとに改行
項目名を横に並べて書くこともできますが、可読性, 編集しやすさが落ちます。最初から改行しておいた方がいいと思います。
Apexで書く場合の注意点
SOQLの開始行のインデントに依存しないように書くことが重要です。そうしないと変数名や型名などのリファクタリング時に都度再インデントする必要が出てきます。また前後の行と位置が揃わないので可読性が下がります。
Contact[] contacts = [select Name
, Email
from Contact
where Name = :name];☓だめな例
Contact[] contacts = [
select Name
, Email
from Contact
where Name = :name
];○良い例
まとめ
可読性を意識したSOQLのフォーマットを紹介させて頂きました。
ただし、複数人で開発する際は、フォーマットを統一することが重要なため、他と形式を揃えることをお勧めします。
ご参考になれば幸いです。
ただし、複数人で開発する際は、フォーマットを統一することが重要なため、他と形式を揃えることをお勧めします。
ご参考になれば幸いです。
16 件


ポスト

