Blog

ブログ

プログラミングのいろいろとわからないこと

エンジニアさんは定年などと言われますが、
35歳ではじめてプログラミングのお仕事をしました。
PHP+MySQLの簡単なアプリケーション作りです。

文字化けやエラーや条件分岐でうんうん悩んだりしながら、何とか形にできましたが、今度受注するときは、もっと早く作れるようにしないと全く元が取れません…

プログラミングについてはこれまで本格的な業務にもしていなかったし、ほぼ独学でやってきました。
もちろん、基本的なセキュリティ対策はできるだけ勉強しているのですが、いわゆる「あまりサンプル集には載ってない細かいこと」がいろいろとわかりません。

開発オフに行くたびに聞くのを忘れてしまうので、めもめも…φ(。。

変数の命名ってどうしたらいいのだろう

今のところ、同じ関係のものは接頭辞を揃えて

$hogeCnt / $hogeTitle

のような感じで、二単語目以上になったらキャピタライズしたりしてます。
でも処理が長くなると、どんどん命名がぐちゃぐちゃになってきてしまって…

$fuga['cnt'] / $fuga['title']

みたいに配列で管理すべき?

データベースの接続と切断

データベースを利用するときは、まずPDOなどで接続するのですが

$piyo = new PDO('mysql:host=' . DB_HOST . '; dbname=' . DB_NAME . ', ' . DB_USER . ', ' . DB_PASS);

一定の処理が終わったら都度切断した方がいいのでしょうか。
PHPスクリプトの先頭で接続、最後で切断…とかまずいでしょうか。

一時変数

複数の変数を組み立ててSQL文やURLを作るときは、一時的な計算のために変数を作ったりするのですが、万一のファイル改ざんが怖くて、処理が終わったらすぐunsetで消してます。

unset($hoge, $fuga, $piyo);

もちろん、クラス定義してプライベート変数にするのがいちばんだろうと思うのですが、PHPのサンプルやTIPSを見ても、一時変数はそのままになっています。
ここまでする必要はないのでしょうか。むしろ処理の無駄?

$hoge = NULL;

それとも、ぬるぽにした方がいいのかな。

三項演算子が嫌い

$hoge = ($fuga == 'abc') ? 'abcが入っています' : '別の値が入っています';

だって一行にされるとなんか読みにくいし。

if($fuga == 'abc')
$hoge = 'abcが入っています';
else
$hoge = '別の値が入っています';

だと、プログラマさん的には冗長なんでしょうか。

md5って大丈夫なのか

PHPサンプルで、パスワードの暗号化などによくmd5が使われているのですが、みんなが使っているアルゴリズムを取り入れてしまって大丈夫なんでしょうか。
他にもsha1とかいろいろあるらしいですが、md5が選ばれる理由って何?強固だから?

ログイン認証にはセッションに何を渡したらいいんだ

いやいやいや(°Д°三°Д°)
どうしたかは書かないです書けないです。

ユーザー登録時にDBにパスワードとは別のランダムな認証キーを保管しておいて、ログインのときはそれを発行した方がいいのでしょうか。
んー、この辺は簡単なCMSをいくつか自分で見て調べてみるかな。

難読化って?

ソースコードの著作権の話をしていたら、こいわさん(@koiwa)が教えてくれました。

んー お客さんからお金もらって仕事する場合とかは、ソースコードの著作権どうする? とかは、契約書に入ってますね。コピペ対策については、 JavaScriptとかは難読化して対処するとかはあります。

それって、プログラミングでもするのでしょうか。
a-blog cmsは暗号化されていますね。でも読みにくくなった分、保守が大変そうです。


考えはじめたらどんどん出てきそうですが、この辺でやめておきます…

PEARもCakePHPも何それおいしいの?な今は、まだまだ勉強が必要そうです。
それでも、お仕事でプログラミングをすると「他の人が利用することを考える」分、確実にスキルアップできることはわかったので、これからも時間を見つけていろいろなことに挑戦してみようと思います。