#define METHOD "set_flag_by_multi" #modfunc set_flag_by_multi var adress, var value, int type, local clause \ , local new_adress, local adress_length, local index ;―――――――――――――――――――――――――――――――――――――――― ; [set_flag_by_multi modvar, adress, value, type] ; ・adress先のフラグ要素をtype型、内容valueにする設定命令 ; adress : Adress型のアドレス表示 ; value : フラグ要素に定義する内容 ; type : フラグ要素の型 ;―――――――――――――――――――――――――――――――――――――――― set_flag_create thismod, adress output_adress_clause adress, clause, 0 if func_adress_length(adress) = 1 { index = func_flag_same_flag(thismod,clause) set_element_flg_clear 傘下フラグ.index, type switch value case VARSTR : set_element_flg_by_utf16 傘下フラグ.index, value : swbreak case VARDOUBLE : set_element_flg_by_double 傘下フラグ.index, value : swbreak case VARINT : set_element_flg_by_int 傘下フラグ.index, value : swbreak default : swbreak swend } else { output_adress_lower adress, new_adress index = func_flag_same_folder(thismod,clause) set_flag_by_multi 傘下集合.index, new_adress, value, type } return #undef METHOD
ユーザー定義命令だらけなので概要を説明すると、第2引数adressは一種のファイル
アドレスで、要素数が1の場合はファイルを、2以上の場合はフォルダを探して更に深く
潜ります。
問題はローカル変数のindexで、要素数1の場合は『アドレスの指定するファイルの座標』を、
2以上の場合は『アドレスが中継に利用しているフォルダの座標』を示している事です。
本来なら別用途の変数を同一ローカル変数で扱うのは問題だとは思うのですが、使用領域が
if〜else構文で完全に並列隔離されており、更に用途も似通っているので敢えて同一ローカル
変数で処理しています。
皆様はこのような場合、ローカル変数を1個増やして各用途毎にローカル変数を使われますか?
それとも、上記のように変数を統一してローカル変数を1個省略しますか?
教えて下されば幸いです。
それと宜しければ、以下の質問にも答えてくださると嬉しいです。
Q2, マルチステートメント(命令間を:で区切り1行に複数命令を記述する事)をするか否か
Q3, if構文をマルチステートメントにするか否か
Q4, switch構文を利用するか否か
Q5, if構文を利用するか否か
Q6, 命令の引数間に半角空白を入れるか(=color a,bではなくcolor a, bと書くか)否か
Q7, 関数の引数間に半角空白を入れるか(=limit(a,b,c)ではなくlimit(a, b, c)と書くか)否か
Q8, ローカル変数を使うか否か
Q9, 一次元の配列変数を記述する際にa(b)ではなくa.bの表記法を使うか否か
Q10,1行の文字数を絶対に半角80文字以内に収めているか否か
Q11,各命令、各関数の行数を絶対に30行以内に収めているか否か
Q12,外部から要求されないであろうモジュール命令を必ずローカルにするか否か
色々なコーディング規約を見てみるとswitchやifは使うなとか、引数間は空白を入れろとか、
80文字30行に収めろとかありますが、素人プログラミングだとどうしても全てを満足させる事が
できません。
なので、皆様がどのようなコーディングをしているのかを教えてくださるとありがたいです。
ちなみに、以下は私自身の回答です。
Q1是 Q2否 Q3是 Q4是 Q5是 Q6否 Q7是 Q8是 Q9是 Q10是 Q11否 Q12否