タグ

論とExcelとprogrammingに関するch1248のブックマーク (3)

  • モダンなVBAの書き方

    「糞VBAコードのメンテナンスが減りますように。なむなむ」 VBAは、非常に古い(VB6ベース)の言語なので、既存のコードは、非常に読み難い物が多いです。しかし、最近、ちょっとしたことをVBAで書いちゃうというソリューションは、案外一般的になりつつあるように思います(これ自体は悪いことではないと思う)。新しく書くVBAのコードをどう書くべきか?という自分なりの意見を纏めてみました。これは、VBAで完全なOOPをしろと言っているものではなく、単純な構造化された小さい関数を組み合わせてプログラムを書く方針(関数型言語のことではない)を勧めるものです。 変数宣言を強制する! これは、自分のため。とにかく書く。オプションで設定しておけば自動で挿入される。 変数宣言は、必要になったところで宣言する! そのコードを読む人に、いちいち、関数の先頭までスクロールさせるな。変数の有効範囲をなるべく狭くするこ

    ch1248
    ch1248 2015/02/08
    配列多用は最悪だけど、クラス使うと遅くなるのがなあ……。
  • Excel VBAつかいまくってるからそろそろ腹にためてることをちょっと書き出すか - oe-roelのカオス落書き帳

    相変わらずExcel VBAを使いまくってる日々なので腹にためてることをちょっと書き込もうと思った。なんか前にも書いたかもしんない。知らない。 以下はバッドノウハウの類も含むカオス内容。 if文内に書いた条件は全て評価されることに注意する。CやJavaのようなショートサーキットタイプではない。 それでもif文の評価コストに慎重にならないこと。 他言語で&&で置き換えられる内容をif文のネストで表現している奴を見たらVB出身を疑うことができる。 変数の通用範囲がプロシージャレベルであることに注意すること。ブロックで通用範囲が消えたりしない。 Dim hoge as New ClassNameとした場合、hogeが始めて使われる場所で変数にNewしてSetされる。その後プロシージャ内でこの宣言が実行されたとしてもNewされることはない。プロシージャレベルでのオブジェクトの使いまわしが怖いならA

    Excel VBAつかいまくってるからそろそろ腹にためてることをちょっと書き出すか - oe-roelのカオス落書き帳
    ch1248
    ch1248 2015/02/08
    だいたい同意。
  • いげ太の日記: ぼくらが VBA を書く理由

    2014年3月24日月曜日 ぼくらが VBA を書く理由 誰かが言った。VBA のここがダメだと。その dis は妥当なものであり、僕も頷けるところだった。自分で言うのもなんだが、僕は VBA についてよく知っている、まあそれなりには。先の dis についても、僕はその解決のための API を知っていて、それらをどう組み合わせれば便利に使えるかについてのアイデアさえあった。ならば、それを作って示すというのがプログラマー分であろう。あとはこの面倒くさいと思う気持ち、VBA なんかのために貴重なプライベートの時間まで割きたくないと判断する僕の真っ当な脳内スケジューラ実装においてどんな理由を与えて当該タスクのスタベーションを回避するかという問題であった。VBA は残念だ。どこがって、なんかもう全体的に。でもこのアイデアはその残念さを払拭とまではいかないが、いくらか緩和させる可能性を持っている

    ch1248
    ch1248 2015/02/07
    同じVBA好きの人間にとって、F♯の第一人者がこう言ってくれる事がどれだけ心強いか。
  • 1