関数プロパティの途中計算を残すべきか? #Notionコラム
#Notionコラム は、Notionの使い方を検討・提案するマガジンです。
今回は、「関数プロパティの途中計算を残すべきか?」というテーマで書いていきます。
#Notion #関数プロパティ #数式 #日付プロパティ #year関数
途中計算を残す
途中計算を残す理由
関数プロパティの数式が長くなってくると、正しい構文で入力することが難しくなります。
それによって、エラーを出したり、気づけないミスを残したりしやすくなります。
また、後日編集する際にその数式の意味を解読することも大変になり、時間の浪費に繋がってしまうかもしれません。
それらを防ぐための一つの方法として、数式を複数の関数プロパティに分割する方法があります。
つまり、途中計算を残す……ということです。
途中計算を残す例
以下のケースでは、「日付」という名前の日付プロパティと、「is 閏年」という名前の関数プロパティがあり、「is 閏年」では「日付」の西暦が閏年か否かを表示しています。
year(prop("日付")) % 4 == 0 and (year(prop("日付")) % 400 == 0 or not (year(prop("日付")) % 100 == 0))
見て分かる通り、数式の中に「year(prop("日付"))」が3回登場しています。
そこで、「西暦」という関数プロパティを追加し、year関数を分割します。
prop("西暦") % 4 == 0 and (prop("西暦") % 400 == 0 or not (prop("西暦") % 100 == 0))
「year(prop("日付"))」と比べて「prop("西暦")」は、丸括弧が1ペア減ります。
この例では「year(prop("日付"))」が3回登場していたので、数式全体で3ペア減りました。
丸括弧が1つ減るだけでも、数式の編集のしやすさは段違いです。
途中計算を残さない例
関数プロパティの分割は、やろうと思えば、いくらでもできます。
例えば、「prop("西暦") % 4」等を「prop("西暦 mod 4")」のように分割することもできます。
prop("西暦 mod 4") == 0 and (prop("西暦 mod 400") == 0 or not (prop("西暦 mod 100") == 0))
しかし、「prop("西暦") % 4」と「prop("西暦 mod 4")」を見比べて、どちらの方が数式の意味を理解しやすいかといえば、大差はないように思えます。
また、丸括弧の数も変わりませんし、入力のしやすさも大差ないでしょう。
「prop("西暦 mod 4")」よりも、短いプロパティ名にすれば入力が簡単になりますが、今度は「prop("西暦") % 4」よりも数式の意味を理解しづらくなってしまうと思います。
途中計算を残すべきか?
以上より、途中計算を残すべきかは、「数式の意味の理解しやすさ」と「正しい構文で入力のしやすいか」の2つの観点から判断すべきだと考えています。
一方が改善される代わりに、もう一方が改悪されるのであれば、分割する必要はないかもしれません。
双方が改善される場合は、余程短いシンプルな数式でなければ、分割した方が良いと思います。
特に数式の中の丸括弧を減らせる場合は、数式の意味も理解しやすくなり、正しい構文で入力しやすくもなるので、分割した方が良いと判断しやすいと思います。