VBのWithを使うと可読性が下がる気がする。Blank?=Falseスマートフォン用の表示で見るBlank?=False「呉下の阿蒙にあらず」をモットーにしたITエンジニアの日々Blank?=Falseこの広告は、90日以上更新していないブログに表示しています。2016-11-07VBのWithを使うと可読性が下がる気がする。VBVB、VBAにはWithという構文があります。このWithを使うとソースコードの可読性が下がるような気がするんです。Withとはどのような構文かどのようなときに使うかなぜ可読性が下がるのかネストができてしまう他の言語にはない改善策コーディングルールとして策定するなら参考文献・サイトWithとはどのような構文か指定したオブジェクトをステートメント内だけオブジェクトの宣言の省略が可能になる。Withと言った風どのようなときに使うか例えば、こういう風に1つのオブジェクトに対して複数の操作を行うとします。FOO_MODE_NORMALFoo.RunFoo.が重複しているのでちょっと冗長に感じしまうかもしれません。そこで、Withを使うと下のように束ねることができます。Withこういったふうに、Withで指定したオブジェクトの宣言を省略する事ができます。することで、同一のオブジェクトに対する複数の操作を簡略化して読みやすくすることができる、と謳われています。主語を省略して動詞だけ言ってるような状態なんですね。「本を読んだ」を「読んだ」としか言わない状態です。文脈として考えるなら、それより前に「本」の話が出ているはずです。「本」をWithに指定した、と考えれば「読んだ」がメソッドとして考える事ができます。コレだけ聞くと、なんでそれで可読性が下がるの?とお思いでしょう。このように幾つものオブジェクトに対し操作する関数があったとします。Subどうですか?主語がないメソッドはちょっと読みにくく感じませんか?それそのはず、Withで指定したオブジェクトはコードを読む時にどのオブジェクトがWith指定されているか、頭の片隅に置いて置く必要があります。他のオブジェクトは主語があるのにWith指定したオブジェクトは主語がないため、またコードに一貫性がなく、読みづらい印象を受けます。いった観点から、Withを使うと読みにくく感じてしまうわけです。ネストができてしまうおまけですが、このWithもネストができてしまいます。このネストがますます可読性を下げてしまうんじゃないかなと考えています。Sub実行結果Bar.ObjectFoo.ObjectこれでWithステートメントが長い行だった場合、ますます理解を困難にさせてしまうと思います。他の言語にはないこのWithステートメントですが、対応している言語は他に知りません。少なくとも、C#、C/C++、Rubyでは見たことがありません。他の言語をメインにやってる人が緊急時にVBを触った場合、リファレンスを読む必要が出てしまいます。いった観点から、驚き最小の法則に従っておらず、読みにくく感じてしまう人もいるかもしれません。改善策Microsoftのリファレンスの例もある通り、Withステートメント内には1つのオブジェクトしか操作させないようにします。ClassWithステートメントは長くならないようにします。コーディングルールとして策定するならもし、Withの使い方についてコーディングルールを作るなら、以下のようにします。21:08VBのWithを使うと可読性が下がる気がする。[完結編]何回目かのVBAでRedisを使うポストですが、ようやく今回で無事V...2016-11-22関数、メソッド、プロシージャ。それぞれの違いは?どうもこんばんわ。プログラミングだと関数を作って・・・とか...2016-11-19汝、SLAPを愛せよ。SLAPという言葉があります。Prin...2016-11-12ソースコードの配色をJellyBeansライクにしてみました。コントローラとアクション今回は、コントローラとアクションについて学習してきます。Lv1試験を受験します。»Profile某製造業の社内Sler。今のお仕事のメインはAccessとVBA。元パッケージソフト開発者。VBA、そしてRDBやNoSQLを組み合わせたアプリケーション開発を得意としています。福岡県、もしくは熊本県へIターン転職に向けて、DB/NoSQLの業務に関われる会社を探しています。レベル1取得しましたリファクタリングの帽子をかぶるということ勉強は大変だが役に立つCUIなCentOS7にcinnamonを導入するLinuxのコマンドはMacOSXでそのまま動くとは限らない月別アーカイブTwitterGooglePocketはてなブログをはじめよう!stonebeach-dakarさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。