PEP8(命名方法)
一番知りたかったところ。実装時にここに最も頭を使います。
原則
- 公開されている API の一部としてユーザーに見える名前は、実装よりも使い方を反映した名前にすべきです。
- l(小文字L),O(大文字O),I(大文字I)を変数に利用しない。
実践されている命名方法
CapWords(CamelCase・StudlyCaps)
- 各単語の先頭のみ大文字
- 文字が凸凹に見える
- 先頭が頭字語の場合は全て大文字にする!!
mixedCase
- 先頭単語が小文字で2単語目以降は1文字目のみ大文字
# CapWordsの例 CapitalizedWords # 先頭が頭字語の場合 HttpServerError (誤) HTTPServerError (正) # mixedCaseの例 mixedCase
パッケージとモジュール名
- モジュール名は全て小文字の短い名前で、_は利用OK。
- パッケージ名は全て小文字の短い名前で、_は非推奨。
クラス
- CapWords方式推奨。
関数や変数の名前
全部mixedCaseを使っていた。ゲホッ!!
関数の名前は小文字のみにすべきです。また、読みやすくするために、必要に応じて単語をアンダースコアで区切るべきです。 変数の名前についても、関数と同じ規約に従います。 mixedCase が既に使われている (例: threading.py) 場合にのみ、互換性を保つために mixedCase を許可します。
メソッド名とインスタンス変数名
関数や変数の名前と同じ。
当然だけど...
パッケージはinit.pyというファイルが存在するディレクトリで、モジュールは.pyファイル。
PEP8(import関連)
読んでみたらプログラムの書き方の参考になりました。これから実装するときはコーディング規約の公式ドキュメントも参考にしよう!
以下に気になったことをまとめました。
import
- import文は通常は行を分けるべき。
#OK: import os import sys #OK: from subprocess import Popen, PIPE #NG: import sys, os
- import文は次の順番でグループ化すべき。
1. 標準ライブラリ 2. サードパーティに関連するもの 3. ローカルな アプリケーション/ライブラリ に特有のもの
- 絶対import を推奨。
- 暗黙の相対importは 絶対に 使ってはいけない。この機能は Python 3 で削除された。
import mypkg.sibling from mypkg import sibling from mypkg.sibling import example
参考
その他全般
AWSの料金確認
超重要なので基本毎日確認すべき。
AWSの環境構築準備(ルートアカウントの作成まで)
クラウド上にマシンを作成するまでの道のりがそもそも長かったりする。。。
1.メールアドレスの取得
- Gmailアカウントを作成した。
2.AWSアカウントの作成
- マネージメントコンソールにログインできるところまで確認した。
- 特に難しいことはなく流れにそっていくだけでよい。
セキュリティ設定
ここからが激しく長い。。 qiita.com
3. 二段階認証
そもそもMFAとは
- Multi-Factor Authentication(多要素認証)。
- IDとパスワード以外の要素で認証を実施すること。この場合はMFAデバイスが生成した値を認証に用いる。
- MFA専用のデバイス(キーホルダー型とかがある模様)もしくはスマホアプリの仮想MFAデバイスを利用する。
- 初回登録時にMFAデバイスと本人情報の連携を行い、2回目以降は本人と連携したデバイスからしか受け付けなくなるのではと推測。
AWS アカウントのルートユーザー または IAM ユーザー 1 人あたり 1 つの MFA デバイスのみ有効にすることができ、デバイスは指定されたユーザーのみが使用できます。
- iPhoneにMFAのアプリAuthenticator経由でMFA認証を実施した。
- これでルートアカウントのアカウント名とパスワードが漏洩しても、初回にMFA認証を端末が手元に無い限りログインはできなくなる。
参考
変数・メソッドの命名法
順次加筆予定
原則1:抽象的な命名は避ける
例1(Memoryとは?)
- writeMemoryのMemoryが何を指すのかが不明瞭。USBメモリ?キャッシュメモリ?メインメモリ?
- メモリという名前のつく単語はコンピュータ関連では複数あるため不明瞭になってしまう。
- 個別の実装内容即した命名などが好ましい。
(前)writeMemory → (後)writeVirtualSegment
例2(getXXX系)
- setter/getter以外でgetは使わない。紛らわしくて混乱する。
- getという単語自体が抽象的すぎる。取得方法はDB経由なのかコンフィグファイル経由なのかインターネット経由でダウンロードするのかが不明。
- 受け取った文字列をRegisterに変更するなら、以下のように別単語に置き換えたほうが好ましい。
(前)getRegister → (後)convert2Register
原則2:情報量の増えない命名は避ける
例1(XXXFunction系)
- メソッド名がXXXFunctionの場合、Functionはあってもなくても情報量としては同じ。
- こうした無意味な名前は冗長にするだけなのでつけない。