このコースでは、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 デザインパターン編 | 裏パターン病 |