このコースでは、C++でのプログラミング、デザイン、
カテゴリ | サブカテゴリ | コンテンツ | リリース |
---|---|---|---|
イントロダクション | 本ドキュメントの目的 | 公開中 | |
本ドキュメントの次に | |||
本ドキュメントの修正・改善 | |||
サンプルコードの説明 | |||
本ドキュメントでの言葉の使い方の注意 | |||
ソフトウェアプラクティス | DRYの原則 | ||
作業の繰り返し | |||
成果物の重複 | |||
KISSの法則 | |||
ボーイスカウトの法則 | |||
YAGNIの法則 | |||
Name and Conquer | |||
ノコギリの刃を研ぐ | |||
推定有罪 | |||
デメテルの法則 | |||
コンウェイの法則 | |||
Inside-Outの法則 | |||
SOLID | |||
単一責任の法則(SRP) | |||
オープン・クローズドの原則(OCP) | |||
リスコフの置換原則(LSP) | |||
インターフェース分離の原則(ISP) | |||
依存関係逆転の原則(DIP) | |||
プログラミング規約 | 型とインスタンス | 算術型 | |
整数型 | |||
char型 | |||
bool型 | |||
浮動小数点型 | |||
enum | |||
bit field | |||
class | |||
struct | |||
union | |||
配列 | |||
型エイリアス | |||
const/constexprインスタンス | |||
リテラル | |||
auto | |||
decltype | |||
インスタンスの初期化 | |||
リスト初期化、一様初期化(uniform initialization) | |||
クラスとインスタンス | ファイルの使用方法 | ||
行数 | |||
メンバの数 | |||
凝集度 | |||
アクセスレベルと隠蔽化 | |||
継承/派生 | |||
インターフェースの継承 | |||
多重継承 | |||
非静的なメンバ変数/定数の初期化 | |||
静的なメンバ変数/定数の初期化 | |||
mutableなメンバ変数 | |||
スライシング | |||
オブジェクトの所有権 | |||
オブジェクトのライフタイム | |||
関数/メンバ関数 | クラス外関数 | ||
メンバ関数 | |||
コンパイラ生成のメンバ関数 | |||
コンストラクタ | |||
copyコンストラクタ、copy代入演算子 | |||
moveコンストラクタ、move代入演算子 | |||
初期化子リストコンストラクタ | |||
デストラクタ | |||
オーバーライド | |||
サイクロマティック複雑度 | |||
行数 | |||
オーバーロード | |||
演算子オーバーロード | |||
実引数/仮引数 | |||
自動変数 | |||
戻り値型 | |||
constexpr関数 | |||
リエントラント性 | |||
エクセプション処理 | |||
ビジーループ | |||
構文 | 複合文 | ||
switch文 | |||
if-else-if文 | |||
範囲for文 | |||
制御文のネスト | |||
return文 | |||
goto文 | |||
ラムダ式 | |||
マクロの中の文 | |||
演算子 | 優先順位 | ||
代入演算 | |||
ビット演算 | |||
論理演算 | |||
三項演算子 | |||
new | |||
delete | |||
メモリ制約が強いシステムでの::operator new | |||
sizeof | |||
ポインタ間の演算 | |||
RTTI | |||
キャスト、暗黙の型変換 | |||
プリプロセッサ命令 | プリプロセッサ命令 | ||
マクロ関数 | |||
マクロ定数 | |||
パッケージとその構成ファイル | パッケージの実装と公開 | ||
識別子の宣言、定義 | |||
依存関係 | |||
二重読み込みの防御 | |||
ヘッダファイル内の#include | |||
#includeするファイルの順番 | |||
#includeで指定されるパス名 | |||
スコープ | スコープの定義と原則 | ||
using宣言/usingディレクティブ | |||
実引数依存探索(ADL) | |||
namespaceのエイリアス | |||
ランタイムの効率 | ランタイムの効率 | ||
前置/後置演算子の選択 | |||
operator X、operator x=の選択 | |||
関数の戻り値オブジェクト | |||
move処理 | |||
extern template | |||
標準クラス、関数の使用制限 | 非推奨STL | ||
スマートポインタの使用制限 | |||
配列系コンテナclassの使用制限 | |||
std::stringの使用制限 | |||
使用禁止関数一覧 | |||
バッファオーバーランを引き起こしやすい関数 | |||
コマンドインジェクション防止 | |||
obsolete関数 | |||
LEGACY関数 | |||
スレッドセーフでない関数 | |||
標準外関数など | |||
扱いが難しい関数 | |||
リソースリークを引き起こしやすい関数 | |||
シンボリックリンクの検査 | |||
strncpy(), strncat()の終端 | |||
TOCTOU (Time Of Check, Time Of Use) | |||
メモリアロケーション | |||
非同期シグナル | |||
その他 | assertion | ||
アセンブラ | |||
言語拡張機能 | |||
特に重要なプログラミング規約 | |||
コード解析 | コンパイラによる静的解析 | ||
g++の警告機能 | |||
clang++の警告機能 | |||
scan-buildによる静的解析 | |||
sanitizerによる動的解析 | |||
コーディングスタイル | インデント用文字 | ||
if、for、while、do-whileのインデント | |||
ブロックのインデント | |||
case、defaultのインデント | |||
ブロック(波括弧({})) | |||
関数シグネチャ内の’()’ | |||
クラスのアクセスレベル | |||
ステートメントの後 | |||
コンマの後 | |||
単項演算子、二項演算子、三項演算子の前後 | |||
不要なブランク文字 | |||
三項演算子のスタイル | |||
ポインタ型の*や、参照型の&の場所 | |||
関数の行数 | |||
行のカラム数 | |||
ブロックの論理レベル | |||
namespace | |||
clang-format | |||
命名規則 | 禁止事項 | ||
略語リスト | |||
言葉の対称性 | |||
ファイル、ディレクトリの命名 | |||
ファイル名 | |||
ディレクトリ名 | |||
型名 | |||
定数名 | |||
ローカル変数名(自動変数名、仮引数名、関数内static変数名) | |||
メンバ変数名 | |||
メンバ関数名 | |||
Accessorメンバ関数名 | |||
関数名 | |||
namespace名 | |||
templateの仮引数名 | |||
マクロ名 | |||
その他の命名則 | |||
コメント | 情報を付加しないコメント | ||
コメントのスタイル | |||
クラスのコメント | |||
関数のコメント | |||
enumのコメント | |||
型エイリアスのコメント | |||
template仮引数のコメント | |||
デザインパターン | ガード節 | ||
enumでのビットマスク表現 | |||
Pimpl | |||
Accessor | |||
Immutable | |||
Clone(仮想コンストラクタ) | |||
NVI(non virtual interface) | |||
newのオーバーロード | |||
RAII(scoped guard) | |||
Future | |||
DI(dependency injection) | |||
Singleton | |||
State | |||
Null Object | |||
Templateメソッド | |||
Factory | |||
Named Constructor | |||
Proxy | |||
Strategy | |||
Visitor | |||
Observer | |||
MVC | |||
開発プロセスとインフラ | プロセス | ||
ウォーターフォールモデル、V字モデル | |||
アジャイル系プロセス | |||
ウォーターフォール vs アジャイル | |||
アジャイル系プロセスのプラクティスとインフラ | |||
自動UTとは? | |||
UTのメリット | |||
アーキテクチャとUT | |||
UTのサポートツール | |||
リファクタリング | |||
リファクタリングのための回帰テスト | |||
ソースコードの改善 | |||
リファクタリングの例 | |||
オリジナルのソースコード | |||
機能追加によるソースコード品質劣化 | |||
小規模なリファクタリング | |||
構造のリファクタリング | |||
UTの開発 | |||
クラスの導入 | |||
UTの変更 | |||
MVCの導入 | |||
UTの変更(UT用クラス導入) | |||
DIの導入 | |||
全クラスのUT | |||
自動ITとは? | |||
自動ITのための仕様追加 | |||
自動ITのためのソースコード変更 | |||
自動IT用ソースコード変更のためのUT | |||
自動ITの実装 | |||
TDD | |||
CI(継続的インテグレーション) | |||
バージョン管理システム | |||
gitのブランチモデル | |||
pull-requestとコードインスペクション | |||
CIとは? | |||
CIとワークフロー | |||
CI項目実行の長時間化と分割 | |||
CI項目の例 | |||
並列処理 | refactoring_5改善プログラムの要件 | ||
refactoring_6のController | |||
refactoring_6のView | |||
refactoring_6のModel | |||
非同期処理とその管理 | |||
TwoPhaseTaskIF(TwoPhaseTaskPtr) | |||
Dispatcher | |||
TwoPhaseTaskPtrキュー管理機構 | |||
refactoring_6の構造 | |||
参考文献 | プロセス・プラクティス | ||
設計・デザイン | |||
C++・C | |||
あとがき | インフラ | ||
プロセス | |||
プログラマ(人材) | |||
Sample Code | build code | ||
C++ | |||
bash | |||
python | |||
plant uml | |||
etc | |||
Damepedia デザインパターン編 | 裏パターン病 |