質問: Ans End Function ``` 具体的な処理の内容は置いておいて 見やすさ はどうでしょうか? ご教授をお願い致します。 ### 蛇足 ~見やすいコードが書きたい~ 最近 作る内容が複雑になってきて過去に作ったコードを再利用出来る様に したいと思い始めました。 現状 コードがぐちゃぐちゃで探すよりも書き直した方が早いという感じで 再利用が出来ません。 書籍を買って読んだりしていますが 知識が増える度に選択肢の多さに迷い 手が止まります。 最終目標は判断基準の確立と コードの使いまわしが出来るようにすることです。 宜しくお願い致します。
回答: いい質問だね。 折角だから、自分のマイルールを少しばかり。 ・Option Private Module を Option Explicit の下に追記する ※ユーザ側から関数を隠す ・関数の説明 中でも外でもどちらでもメリデメがあると思います。 中に書く場合は、VBAでコードの説明を抜き出す時に便利 (モジュール内の最初の関数の説明を抜き出すのが面倒) また、1関数だけ表示する「プロシージャの表示」にしても説明が見れる (外に書いた場合は説明が見えない) ただ、往々にして、説明が更新されずに処理が変わる、という事が起こりやすいので、 説明を書くよりも、コードを分かりやすく書く方が重要だと思います。 分かりやすく書くという事は、関数名、変数名、処理の流れ等を意識するという事ですね。 ・変数の宣言位置 最初は関数の頭に書くように教えられたけど、 正直、コーディングしにくい。。。 しかも、他の言語では直前に宣言する事が主流だと聞く。 なので、自分も必要になった時に、近場の分かりやすい位置に書くようにしてます。 ・繰り返し どうしても Do-Loop じゃなきゃって時意外は、For-Next がメインかな。 ていうか、インクリメントを自分で書くという事は、バグの可能性が増えるということで。。。 そして、Do-Loop は無限ループの可能性があるから、敬遠する気持ちが必要かと。。。 あと、ループx2の時にインデント揃えるのは微妙な気がする。。。 ・ネーミングセンス これからビシバシ鍛えた方がいいと思うよ。 Ar なんていう変数名、何だと思えばいいのか。。。 共通関数ならなおさら。 他にも2文字を多用してるけど、なぞなぞになっちゃうのでは? Vertical って変数名で Boolean型 にしてるところは、 自分は Direction って変数名で xlRowCol列挙体 を使うかな~ というのも、エクセルではシートの行・列操作が多いから、 必然的に配列も1,2次元配列で十分なんだよね。 だから、配列の次元数は、基本的に2次元以内という前提で共通関数を作ってるよ。 ・関数名 色々なんだよね。まぁ現場に合わせるのが原則だけど。 ただ、自分ルールでは、共通関数は fArray_Trans とか、 頭にf、その後にArray とか String とか Range とかメインとなる名称、 で、その後ろに機能を付けていくようにしてます。 非常に多くの共通関数を作っていくうちに、こうなったんだけど、 理由としては、自作関数だと見て分かりやすい事と、 f〇〇でインテリセンスを出せば、名前を憶えてなくてもリストから見て探せる事。 ※Array用の共通関数は、それ用の1モジュールにまとめてたりします(M_Array モジュール等) ※本当はクラス化とかした方がいいのかもだけど、VBAの世界でクラス化を進め過ぎると、 ついてこれない人がいるかもだし、移植しやすいので、今はこれで良しとしてます。 ※要望としては既存のオブジェクトの機能を上書きしたいんだけど。。。VBAではできないから残念。。。