[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .

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

Table of Contents
変数の命名規則(ネーミングコンベンション)
デザイン/コーディングスタイルの上でいろいろ
[再録] プログラミング・スタイル (原案のメモ(注: 単なる走り書き))

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

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	=	文字列(数字だけど文字列扱い)

パターン2 (例 acl.cf)

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

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

属性2			=	var1
				var2
[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .
Copyright (C) 1993-2022 Ken'ichi Fukamachi mail:< fukachan at fml.org >