質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1038閲覧

変数への命名規則が定まらず、悩んでいます。

yayak

総合スコア66

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

0クリップ

投稿2019/03/09 09:49

編集2019/03/09 09:55

以前このサイトで、関数や変数への命名の規則は一貫させた方がよいのかという質問をし、「命名規則」をしっかりさせる大切さを教わりました。

そこで、自身のコードにも命名規則を定めようと考えたのですが、考えれば考えるほど「良い命名規則」がわからなくなってしまいました。

例えば、SQLで、「POSTされたメールアドレスを元に、hogeテーブルからuserIDをSELECTした値」を変数に格納し、それにネーミングするものとします。

// 1.変数を見て、どんな条件でどのテーブルから取得してきたかわかるようにする。 $userID_from_hoge_table_by_email = POSTされたメールアドレスを元に、hogeテーブルからuserIDをSELECTするSQL文; // 2.シンプル $userID = POSTされたメールアドレスを元に、hogeテーブルからuserIDをSELECTするSQL文;

今まで、2のシンプルなパターンで命名することが多かったのですが、上記の例なら、「あれ、この$userIDってどんなふうに取得してきたデータが格納されているんだっけ??」と思うことがあり、そうなることを予防するために、たまに1のパターンでコードを書いているときがありました。
結果、コードに長い変数名と短い変数名が混同して、気持ちが落ち着きません。

シンプルかつ、後で見たときに変数の中身がわかりやすい書き方で、悩んでいます。

上記のようなSQL文に対する命名を考えるとき、皆さまの、おすすめの命名規則があればぜひご紹介いただけましたら幸いです。

何卒、宜しくお願い致します。

KojiDoi👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

$userID_from_hoge_table_by_email = POSTされたメールアドレスを元に、hogeテーブルからuserIDをSELECTするSQL文;

長ったらし過ぎて総スカンを食いそうです。
プログラム中のコメントや仕様書として記述すべき内容までネーミングでカバーするのは無理な話です。
hoge以外のテーブルからemail以外の方法で取得するデータも同じカラムに入ってくる様な変更が入ったら、カラム名を直せますか?

データベースの種類、バージョン、使っている言語を明示した方が適切なコメントが付きやすいです。
Oracle12c以降ですとカラム名を128バイトまで使えますが、Oracle11g以下ですとカラム名は30バイトまでです。

OracleですとCOMMENT ON COLUMN(SQL言語リファレンスを見てね)でカラムの説明を付けて、 USER_TAB_COLUMNSとUSER_COL_COMMENTS(リファレンス マニュアル参照)から簡単なテーブル定義書を作成する類のことはよくあることです。

投稿2019/03/09 10:28

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yayak

2019/03/09 11:28

> プログラム中のコメントや仕様書として記述すべき内容までネーミングでカバーするのは無理な話です。 変に長い命名をしてしまっていた部分を、この機会にやめていこうと思います。 現場視点のアドバイスを頂けて、本当にためになりました。有難うございます。 > データベースの種類、バージョン、使っている言語を明示した方が適切なコメントが付きやすいです。 質問の仕方に関するアドバイスも有難うございます。今後気を付けていきます。ちなみに、MySQLのバージョン5.7.16を使用しております。
guest

0

自分はよく配列にしています。たとえば検索欄があり、そこに名前、住所、年齢などが送られてきたとき
命名規則を考えて名称をつけると冗長な場合もあるので

PHP

1$ar_words['age'] = $_POST['age']; 2$ar_words['name'] = $_POST['name']; 3$ar_words['address'] = $_POST['address'];

このようにすればすっきりするし、検索条件をまとめてsqlのプレースホルダにまとめて代入したりする場合に便利なので。

また、配列は$ar_という接頭辞をつけることでこれは配列であるということをひと目で分かるようにしています。

また、フラグなど目的を表す変数の場合ですが、単に判定用のフラグなら$xxxx_flg、インクリメント用のカウントならば$xxx_numという風にどの目的で使用しているフラグなのかということがわかるようにしています。

投稿2019/03/09 10:11

FKM

総合スコア3633

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yayak

2019/03/09 11:31

>配列は$ar_という接頭辞をつける 確かに一目で配列だとわかりますね! 自分の中で一貫したフラグの付け方を今後意識してみようと思います! わかりやすく教えてくださり心より感謝申し上げます。有難うございます<(_ _)>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問