2022-03-30 雑談 VBAのコードが読みない理由を考える

1
ほえほえ@スプシマン @hoehoe1234

VBAのコードが読めないのは「とっちらかっているか」なんだとおもいます。きれいな部屋は文章として「こうなっている」と記述できますが、とっちらかっている部屋の記述は極めて困難です。難しいのではなくて、レンジの指定などが絶対座標で「意図が読めない状況」でコードに多数埋め込まれていること

2022-03-17 17:17:39
ほえほえ@スプシマン @hoehoe1234

かな?VBAではどうしてもそうなりがちなので。あとは関数化ができていない。「手順」で関数を分けているだけで機能とかデータとか部品としてわけられていない。長いコードを単に手順の区切りの良いところで切っているだけ。これを読むのは相当に辛い。

2022-03-17 17:19:10
ほえほえ@スプシマン @hoehoe1234

そうならなくするための縛りは、関数インタフェースを書くこと。「この関数は何を引数に、どのシート喉の範囲を対象に、なにをやるか」を関数仕様としてきちんと書き起こすこと。考えてない関数分割はこれを書き起こすことができません。

2022-03-17 17:20:35
ほえほえ@スプシマン @hoehoe1234

関数仕様をきちんと書くことは、関数の設計に極めて需要で、これを書くことにより「関数を適当に作る」ことができなくなる縛りになります。入力、出力、変形仕様、使用するシート、そして機能。これを組み合わせて全体をつくるのがモジュール型プログラミングです。

2022-03-17 17:21:53
ほえほえ@スプシマン @hoehoe1234

とにかく関数仕様を書くのです。関数が書いてから書いても十分です。「先にかけ」というのは教条的にすぎると思います。やっている途中でさらによい分割、統合、アイデアがでてくるからです。なので関数の単体テストが終わったあたりで関数仕様書を書くとよいです。

2022-03-17 17:23:32
ほえほえ@スプシマン @hoehoe1234

関数を作っている最中に書かなくても「あとで関数仕様書は書く」という縛りがあれば、関数が明確になります。VBAが読めないのは難しいからではなくて①範囲などが記号的であり説明的でない②関数分割ができてなくて全体構成がわからない。の大きくは2つになるでしょうか?どちらもスキルですので習得

2022-03-17 17:25:05
ほえほえ@スプシマン @hoehoe1234

できます。ただ、ノンプロにそれが必要か?と言われればいつもいうように、そうではなくて、動けばいいとおもいます。ただし、他人によるメンテとかはできませんし、個人使用にとどまるとおもいます。なんでもかんでもレベルが高ければいいというわけではないですから。

2022-03-17 17:26:06