プログラミング・スタイル

fml8 チュートリアル (バージョン 7.99.1-20180910)
Prev |  | Next

# Chapter 31. プログラミング・スタイル

本章は、プログラミング・スタイルに関する諸問題についてのメモです。

FML.ORG のソフトウエア・コーディング・スタイルの詳細は FNF (FML.ORG Natural Form) を参照して下さい。

# 変数の命名規則（ネーミングコンベンション）

default という単語をどこにはさむか？は悩ましいです。

一般に、一番左に来る（たいてはい最初の _ までの）文字列部分は、 大きな”くくり”でのクラスを意味すると考えられます。

たとえば article_* であれば記事関連の変数がすべて article_* (article の右側に単語が続く変数群) に定義されていると期待するでしょう。

そう考えると、 default_* (つまり default クラスが存在すると考える)より、 「クラス_default_変数」ないしは「クラス_変数_default」 というシンタックスが素直に思えます。

## 変数の階層構造

よりシステマティックな変数命名ルールを考えていくと、ここでも、基底クラ スと継承という考えを（ある程度）導入する方がよいと思うようになりました。 たとえば、次のようなものです。

mail は「いわゆるメール」つまり messager/rfc822 形式のものです。 fml システムへ入力されるものも mail だし、出ていくものも mail です。 それらは mail から派生したサブクラスと考えられるため、 「PREFIX_mail_属性」形式に統一する方が良いでしょう。 ただし、ものすごく厳密に行なうと、逆に、わけがわからないのでほどほどに。

    mail_何とか
    mail_default_何とか

    use_incoming_mail_何とか
    incoming_mail_何とか

    use_outgoing_mail_何とか
    outgoing_mail_何とか

    use_report_mail_何とか
    report_mail_何とか

この例でも、厳密には outgoing_report_mail とかするべきなんでしょうけど、 そこまではやらないのがほどほどってところですね。

ヘッダ関連の場合、こういった感じになるでしょう。

    header_なんとか
    header_default_なんとか

    article_header_なんとか
    use_article_header_なんとか

    command_mail_header_なんとか
    use_command_mail_header_なんとか

クラスの階層構造 であらわすと、こーんな感じになるとおもいます。

    command {
    	SOMETHING_command
    	admin_command
    }

    directory {
    	XXX_directory
    }

    file {
    	template_file
    }

    mail {
    	incoming_mail
    	outgoing_mail
    	report_mail
    }

    message {
    	reply_message
    }

    article {
    	article_digest (digestではなく、article の digest だとわかる命名を)
    	article_spool  (spoolではなく、article の spool だとわかる命名を)
    }

## 標準パターン (例 log.cf lock.cf)

    use_変数		=	yes か no

    # ディレクトリなら最後に _dir がつくことが望ましい
    変数_dir		=	文字列

    # ファイルなら最後に _file がつくことが望ましい
    変数_file		=	文字列

    変数_type		=	文字列

    変数_format		=	文字列

    変数_format_type	=	文字列

    変数_limit		=	文字列(数字だけど文字列扱い)

    変数_upper_limit	=	文字列(数字だけど文字列扱い)

    変数_lower_limit	=	文字列(数字だけど文字列扱い)

## パターン２ (例 acl.cf)

    変数_restrictions	=	reject_属性1
    				check_属性2
    				permit_なんとか

    属性1 			=	パターン1
    				パターン2
    				…

    属性2			=	var1
    				var2

## パターン3 (さらにプログラム名がつく場合)

    プログラム_変数_属性

Prev | Home | Next
リリース・エンジニアリングについて (目標！) | Up | デザイン/コーディングスタイルの上でいろいろ

fml 8.0 (fml-devel) project homepage is www.fml.org/software/fml8/.
fml 4.0 project homepage is www.fml.org/software/fml4/.
about one floppy bsd routers, see www.bsdrouter.org/.
other free softwares are found at www.fml.org/software/.

author's homepage is www.fml.org/home/fukachan/.
Also, visit nuinui's world :) at www.nuinui.net.

For questions about FML, e-mail <fml-bugs@fml.org>.