2021年6月11日

VBAとか命名規約とか調査、雑感 2021-06-11

2
ほえほえ@DX塾 @hoehoe1234

検討し直したけど、やはりこの実装でいいような気がする。 pic.twitter.com/uX78ORCLOr

2021-06-10 16:23:13
拡大
ほえほえ@DX塾 @hoehoe1234

関数は 動詞+名詞(または逆) なんだけど、形容詞的なものをどうするか?は名詞の後か前かはよくなやむ。それはおいといて、動詞と過去分詞は使い分けないと順序が逆になるので注意だね。

2021-06-10 17:42:14
ほえほえ@DX塾 @hoehoe1234

過去分詞は名詞(の仲間)なので名詞の位置におかなきゃいけないんだよね。これ、よく間違える。次にあるのが「アクション」を名前につけるか「戻すもの」を名前につけるかの葛藤。これは答えがでていない。

2021-06-10 17:43:54
ほえほえ@DX塾 @hoehoe1234

tk_sort関数は、ソートするというアクションを関数の名前にしている。一方、tk_sorted関数は「ソートされたものを返す」という戻りデータを関数名に採用している。前者は動詞なので機能、後者は名詞なのでデータを示唆しているんだね。これは両方合理性があるのでよく悩みます。

2021-06-10 17:45:30
ほえほえ@DX塾 @hoehoe1234

これは動詞が ①そのまま使うと機能をあらわし ②過去分詞にするとデータを表す ことに由来しているので、たぶん、プログラミングというよりも分類学とかそういった体系を勉強しないと深堀りはできない感じなのかな?

2021-06-10 17:46:37
ほえほえ@DX塾 @hoehoe1234

これだけ多くの人が関数名に悩んでいるので「分類学からみた関数名の付け方」みたいな書籍があってもいいとおもうんだけどね。sheet_bulueはbule_sheetでもよくて言語により並び順が違うしね。

2021-06-10 17:48:05
ほえほえ@DX塾 @hoehoe1234

very_firstも、first_veryでも特に問題はないんだよね。どちらも動詞と名詞を修飾するので位置は自然ときまるんだけど、思い出しやすさからは動詞、名詞が先にきたほうがよいとおもうんだよね。

2021-06-10 17:49:24
ほえほえ@DX塾 @hoehoe1234

obj_blueとblue_objでは関数を思い出すときに、名詞が先に思いつくのでobj_blueのほうがよいと思うし、very_firstも同じ理由で副詞が後がいいとおもうだけど、たとえばmore_token関数などだと状態を表すmoreが先のほうがわかりやすい気がする。

2021-06-10 17:51:32
ほえほえ@DX塾 @hoehoe1234

オブジェクト指向との親和性なら 名詞+動詞になるんだけどこの名詞の前後に形容詞的なものが、動詞の前後に副詞的なものがつくので、仮に関数名を名詞+動詞と決めたのであれば

2021-06-10 17:52:27
ほえほえ@DX塾 @hoehoe1234

①(形容詞)+名詞+(形容詞)+(副詞)+動詞+(副詞) になって、かつ、isとかhasのようなものは別扱い。って感じでいいのかな?しかし、動詞を過去分詞にした場合の名詞としての扱いは、本質的な名詞とは違うような気もしてるんだよね。

2021-06-10 17:54:04
ほえほえ@DX塾 @hoehoe1234

改行法師 全国をあまねく歩き、改行がないために保守性の悪いコードを書く庶民に改行の重要性を説法をしつづけた。 ときに言われなのない避難を浴びもしたが、彼の説法が正しかったことは歴史が証明している。 民明書房 法師とコードの暗闘史100 pic.twitter.com/f6drmQwh71

2021-06-10 18:03:37
拡大
ほえほえ@DX塾 @hoehoe1234

重複行の削除。ちゃんとできている。 pic.twitter.com/NTxRuAihTe

2021-06-10 18:19:16
拡大
拡大
ほえほえ@DX塾 @hoehoe1234

関数の組み合わせ性の例。ライブラリとか共通関数が難しいことの1つはこの部分の設計。定義から考えていかないと組み合わせられない大量の関数が発生して保守性が極端に落ちちゃう感じ(開発しての実感w)。関数の組み合わせ性は、定義をどうするか?という観点がないとうまくいかない。 pic.twitter.com/G25X3PE0DH

2021-06-10 18:24:04
拡大
ほえほえ@DX塾 @hoehoe1234

これもこういう設計にしておかないと、他のレンジを操作する関数、組み込み関数との相互運用ができないです。 このようにしておけば  set rsn = Range(Range(X), tk_range_last_row(y)) のように組合わて使うことができます。 pic.twitter.com/9sm0TKFiCI

2021-06-10 18:28:41
拡大
ほえほえ@DX塾 @hoehoe1234

evaluateは文字列、[]は識別子。ってのはうまいとおもうんだよね。わざとなんだろうね。

2021-06-10 18:42:18
ほえほえ@DX塾 @hoehoe1234

レンジのグループ。 特に①の理解が重要。 pic.twitter.com/JN1QNTFMGh

2021-06-10 18:56:59
拡大
ほえほえ@DX塾 @hoehoe1234

ライブラリ関数のうち、イミデトウインドウでよく使う関数には短い別名をつけているんですが、その一覧をだせるようにaliasコマンドをつくりますた。モジュールを解析するといろいろできますね。 pic.twitter.com/xbsvIFIzF0

2021-06-10 19:43:31
拡大
ほえほえ@DX塾 @hoehoe1234

enumにはいろいろな流派があるが、ワイはこれにしている。 pic.twitter.com/1OWzyaLrI1

2021-06-10 19:47:32
拡大
ほえほえ@DX塾 @hoehoe1234

レンジに2次元配列を設定したときに左上基準からかってにうめないのは、やはり合理的なのかな?昨今のうごきからいうとスピル風フィルでもいいような気もするが。新関数、スピル、配列対応関数、2次元配列を組み合わせて手法が確立できそうでできてない。

2021-06-11 01:41:37
ほえほえ@DX塾 @hoehoe1234

エクセル+VBAでのソートの整理。あやふやすぎるのでちょっとまとめてみますた。 pic.twitter.com/EQ5mApv8Mh

2021-06-11 02:34:18
拡大
ほえほえ@DX塾 @hoehoe1234

VBAの観点からは、特にSortBy関数に注目だとおもいます。いわゆるDSUソートになっていて、基準が複数選べるのは素晴らしいですね。ただ大文字小文字を同一視するのは困った仕様です。

2021-06-11 02:36:27
ほえほえ@DX塾 @hoehoe1234

ただこれもDSUソードですので、Asw(x)のように、文字コードとかに変換してしまえば意図した順番で並べ替えられます。大文字小文字をデフォルトにしておいて、必要あれば変換してね。ということなんでしょう。

2021-06-11 02:38:03
ほえほえ@DX塾 @hoehoe1234

sort関数、sortby関数の説明については神髄さんサイトが素晴らしいです。

2021-06-11 02:41:21
ほえほえ@DX塾 @hoehoe1234

シートでの活用はさておき、VBAでこの関数を活用しようとしたときに一番の問題点は「基準配列をどうやってつくるのか?」という一点に集約すると思います。

2021-06-11 02:43:10
ほえほえ@DX塾 @hoehoe1234

sort関数は既存のエクセルでの並び替えの延長と捉えられますのでVBAで使用するのも困難ではないでしょう。しかし、Sortby関数を使いこなすには、map相当の関数が必要になるかと思います。

2021-06-11 02:46:56
残りを読む(10)

コメント

コメントがまだありません。感想を最初に伝えてみませんか?