プログラマーを悩ませる、命名の難しさについて

変数名・メソッド名・DBの列名等などをどう名前付けていくべきかについての対話の記録
75
Kiyoshi SATOH @stealthinu

@suno88 @nabetaro 元のデータが駐車場「有り・無し」だけの台数情報がない場合と「駐車場n台分」とが混在してる場合を考えてました。「有り」を「>0」で表現しちゃうと「1」で1台分だけあるのか「有り」を表現したいのかがわからなくなると言えばいいでしょうか。

2014-03-28 16:31:36
Kiyoshi SATOH @stealthinu

@rizumita @suno88 @nabetaro りずさんの指摘とはまたちょっとずれるかもしれませんが、英語的表現と他の項目と名前合わせるのとどっち優先されますか?隣でseatCapacityと宣言しててparkingVacancyのほうが表現がより合ってたとして。

2014-03-28 16:37:07
Kiyoshi SATOH @stealthinu

@rizumita @suno88 @nabetaro つまり、そのクラス内では台数・席数・あたりは「capacity」でまとめたいと感じるんです。ああ、日本語の例で言えば「にんじん」と「いちご」を同クラス内で数えるならにんじんを「本」ではなく「個」で数えたいみたいな?

2014-03-28 16:40:33
suno (すの) @suno88

@stealthinu @nabetaro なるほど、理解しました。では PARKING と PARKING_CAPACITY の 2 つのカラムを持ち、台数不明の場合は PARKING_CAPACITY を null か 0 にするのがよさそうです。

2014-03-28 16:37:19
Kiyoshi SATOH @stealthinu

@suno88 @nabetaro DBカラム名の場合だとparkingもしくはhas_parkingをboolで持っててparkingがfalseの場合にparking_capacityをnullにしとくってことですね。おかげさまでだいぶなじんできました。

2014-03-28 16:44:42
suno (すの) @suno88

@stealthinu @nabetaro null が入ると集計時に面倒なので、PARKING_CAPACITY を not null にして台数不明時は 0 を入れるのが私は好きですが、null のほうが自然かもしれません。ここは好みの問題ですね。

2014-03-28 16:47:40

ちょっと脇道。正規化するしないも関係するぞと

りすのすけ @risunosuke

@suno88 @stealthinu @nabetaro 好みというか、正規化するかしないかの方針次第かなって。

2014-03-28 19:37:59
suno (すの) @suno88

@risunosuke あれ? 駐車場の収容台数不明時に null を設定するか 0 を入れるかは、正規化と関係あるんでしょうか。

2014-03-28 19:42:08
りすのすけ @risunosuke

@suno88 DBを正規化する場合は、nullは不許可だったと記憶してます。

2014-03-28 19:48:29
suno (すの) @suno88

@risunosuke 調べたらどうやらそのようですね。まったく記憶にない(汗)。今夜、帰ったら『プログラマのための SQL 第 2 版』を読み返してみます。

2014-03-28 19:52:22

再び本筋

suno (すの) @suno88

@stealthinu @nabetaro 駐車場があるけれど台数が不明の場合は PARKING = 1、PARKING_CAPACITY = 0 or null にするということです。(つづく)

2014-03-28 16:47:23
Kiyoshi SATOH @stealthinu

@rizumita @suno88 @nabetaro すのさんのフォローのとおりです~ 元が~flagって表現がなんで悪いのかってあたりからスタートしてまして。僕はどうしてもbool系のデータ保持領域に~flag付けたくなりがちなのでどう考えればよいか教えてもらってました。

2014-03-28 16:47:43
Kiyoshi SATOH @stealthinu

@suno88 @nabetaro PARKINGは駐車場有りなしの「フラグ」で良いのですよね?「1」としたのはなにか意味ありですか?

2014-03-28 16:50:27
Kiyoshi SATOH @stealthinu

命名則の件、だいぶ勉強になってるが、これを過去に書いたソースやらDBやらに反映させようと思うと orz という気持ちになるな。どうすべ。

2014-03-28 16:53:49
suno (すの) @suno88

@stealthinu @nabetaro そうです。PARKING はフラグです。boolean 型のないデータベースを想定して 0 = なし、1 = ありとしました。boolean 値を持てるデータベース、もしくはプログラム側なら、もちろん true/false で。

2014-03-28 16:54:34
Kiyoshi SATOH @stealthinu

@suno88 @nabetaro 了解しました。名前は「PARKING」だけということですね。もしPARKING_CAPACITY項目自体が不要で有り無しだけの場合で良いとして、PARKINGの型を見ればそれが有り・無しを表してるかわかりますが、項目名だけではわかりませんよね。

2014-03-28 16:58:26
Kiyoshi SATOH @stealthinu

@suno88 @nabetaro そう考えると HAS_PARKINGのほうが(その点で考えるとPAKING_FLAGのほうも)ベターだと思いました。ということでDB項目名でも「HAS_PARKING」がいいかな?というのが今の到達点。

2014-03-28 17:01:46
suno (すの) @suno88

@stealthinu @nabetaro DB の話として、カラム名を HAS_PARKING にしてブール値であることを主張する、PARKING だけでもデータが 0/1 だからいいでしょとする。私はどちらでもよいと思います。でも PARKING_FLAG、お前はダメだ!

2014-03-28 17:03:09
Kiyoshi SATOH @stealthinu

今書いてるやつにも~Flagがあるのだよな。これ今から変えるべきか。今ならまだ間に合う、か?

2014-03-28 17:03:12
Kiyoshi SATOH @stealthinu

@rizumita @suno88 @nabetaro 命名則の件、みなさま大変ありがとうございます。~Flagの件とか、こうした方がいい、みたいなのは聞いててもなんか気分的にしっくりきてなかった部分、今日いろいろ聞いたことでだいぶ体になじみました!

2014-03-28 17:07:01
suno (すの) @suno88

以前にもツイートした、データベースのカラムやプログラムの変数名などに「_flag」とつけることに対する私の考えはこちらです。http://t.co/WH5LAKMszg

2014-03-28 17:08:39
リンク t.co Twitter / suno88: あと、プログラムにもデータベースにもいろんなフラグがあるけれ ... Instantly connect to what's most important to you. Follow your friends, experts, favorite celebrities, and breaking news.

tmp, temp の問題