Blank?=Falseスマートフォン用の表示で見るBlank?=False「呉下の阿蒙にあらず」をモットーにしたITエンジニアの日々Blank?=Falseこの広告は、90日以上更新していないブログに表示しています。VBAみなさんこんばんわ。APIは使いたくないのでネットで探したコードを使いました。そのコードが、そのままだとちょっと微妙かなと思ったのでリファクタリングをしました。今回は、そんなネットで拾ったコードとリファクタリングの話について書いていきます。元のソースコードこちらのページのコードです。tetsuyanboとりあえずこうかな、位の軽い感じで書かれたコードだと思います。(作者様、誠に勝手ながらGistに上げさせて頂きました。不都合あれば削除致します。...コードをそのままコピペしてはいけないこちらのコードをそのまま使うと、他のコードとの親和性が微妙ですしちょっと冗長にも感じます。多くのプログラマから忌み嫌われています。コピペ駆動開発をするのは職業プログラマならできるだけ避けておいたほうがいいです。そこでバグが発生した時にどこが原因かの割り出しに時間がかかってしまいます。こんな記事もあります。バレてないと思っても実はバレていたりします。いうわけで、このコードをこんな風にリファクタリングして使うことにしました。様々な変数の先頭ににstr,obj等のそのクラスや型などがついています。これは、プリフィックスと言いまして、プリフィックスを変数名の先頭につける書き方を世間一般ではハンガリアン記法と呼びます。実は本来のハンガリアン記法ではないのです。詳しくはWikipediaに書かれています。開発グループでも採用された。変数名にデータ型を表す接頭語や接尾語をつける記法だと誤解された。シモニーの意図していた記法をアプリケーションハンガリアン、誤解に基づく記法をシステムハンガリアンと呼ぶ。Wikipediaこの「システムハンガリアン」は変数名が冗長になりやすく、逆に読みにくくなることがしばしばあります。ファイルパスを格納する変数名をstrFilePath、もしくはFilePath,どちらが読みやすいでしょうか?まず、ファイルパスというのは間違いなく文字列です。したら、わざわざ文字列と表現するstr接頭語はいりません。なくたって文字列型と分かります。逆に、文字列型でなければそもそもの付け方がおかしいと思います。この接頭語があるから大丈夫、を免罪符に分かりにくい変数名になっているものをしばしば見かけることがあります。これは、ファイル名を格納する変数です。ファイル+文字列ならファイル名でしょ、という考えで付けられたものですが、ファイルと文字列で想像出来るものは他にもファイルパス、ファイルの作成者等色々なことが文字列で表現出来るため、「わかりにくい」になってしまうのです。この考えに従い、各変数を見直しました。使わない変数があるFileSystemObject.CreateFolderの返り値を格納するstrValueという変数があります。この変数、使っていないんですよね。いう使わない変数は読みにくくなりやすく、またメモリを余分に消費してしまいます。いう使わない変数は消してしまいます。IF文をワンライナーで書く自分の場合、IF文はできるだけワンライナーで済むように書きます。これは、ネスト(深さ)を浅くするため、そして読みやすくするためです。直感的に読みやすくなります。これをブロックで構成されると、もし◯◯条件であればこのブロック内を実行、と考えて、次にブロック内は△△をする、と考える必要になってしまいます。ワンライナーにしています。遅延バインディングを事前バインディングに直すこれはVBA特有?VBも?かはわかりませんが、外部ライブラリを使う時に遅延バインディング,事前バインディングの2つのやり方があります。それぞれメリット、デメリットがありますが、それについては以下を参照してください。遅延バインディングを使うことで互換性対策ができることがあります。ないケースなので私の場合基本的に事前バインディングを使います。間違いなくマーチン・ファウラー氏のリファクタリングしかないでしょう。中盤からはリファクタリング手法を紹介するカタログになります。私は前の会社にいた時にこの本が会社にあったので読んだのですが、非常にためになる内容で、読んだ日からソースコードが大分綺麗になった記憶があります。今は手元にないのですが、いつか購入する予定です。カタログを半分くらい忘れてしまっているのもあるので、改めて読み直しておきたいと考えています。ちなみに、本記事のタイトルであるリファクタリングの帽子をかぶる、と言うのは本書に「何かアレと思ったらリファクタリングの帽子をかぶって見てみる」という所から来ています。このリファクタリングですが、Rubyエディションもあります。この本は読んだことがないのですが、レビューを見ると原書そのまま、Ruby言語に直したような雰囲気のようです。21:30リファクタリングの帽子をかぶるということTweet広告を非表示にする関連記事2016-11-19汝、SLAPを愛せよ。SLAPという言葉があります。Prin...2016-07-23Qiitaに投稿した記事の検証Qiitaにこんな記事を投稿してみました。データベースとモデル基礎RubyOnRails、今回はデータベース回です。»Profile某製造業の社内Sler。今のお仕事のメインはAccessとVBA。元パッケージソフト開発者。VBA、そしてRDBやNoSQLを組み合わせたアプリケーション開発を得意としています。福岡県、もしくは熊本県へIターン転職に向けて、DB/NoSQLの業務に関われる会社を探しています。レベル1取得しましたリファクタリングの帽子をかぶるということ勉強は大変だが役に立つCUIなCentOS7にcinnamonを導入するLinuxのコマンドはMacOSXでそのまま動くとは限らない月別アーカイブTwitterGooglePocketはてなブログをはじめよう!stonebeach-dakarさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。