プログラマとして何を勉強したらいいか分からなかった頃に書きためたメモ

キーワード集
何から勉強していけばいいか分からなかった頃のメモをnoteに移動

これからも逐次増やしていく予定
SOLID原則
オブジェクト指向プログラミング
ダックタイピング
デザインパターン
DDD (ドメイン駆動設計)
BDD
データバインディング
DI (依存性注入)
RDD 責任駆動設計
NullObject Pattern
防御的プログラミング

テストファースト
テスト駆動開発
TDD
モック、スタブ、ドライバ

リファクタリング

メタプログラミング

GOOSスタイル
関数プログラミング

kubernetes
docker
SQLアンチパターン
冗長性

lint check
PEP8
コメントスタイル
GitFlow

リーン・スタートアップ
アジャイル
スクラム
XP

継続的デリバリー
DevOps
ML-Ops
Kubeflow

競プロ

デメテルの法則
メッセージを送ることができるオブジェクトの集合を制限する

意識すべき
見通しが良い : Transparent
合理的 : reasonable
利用性が高い : usable
模範的 : exemplary

---

コンポジションはhas-a関係を持つ
包含される側のオブジェクトが包含する側のオブジェクトから独立して存在しない
例: 料理が食べられれば、前菜もなくなる

集約は包含されているオブジェクトの存在が独立している
例: 学部と教授

---

テストすべき
・受信メッセージは返す値を確認する
・送られたこと確認にする、送った内容は確認しない

---

Actionは大きく分けて2つ
クエリかコマンドのどちらか

---

コメントをする必要がない
もし必要があるなら、メソッドの粒度を見直すべき

---

依存方向の選択 >> 自身より変更されないものに依存する
データではなく、振る舞いに依存する

バリューオブジェクトをストラテジーで入れて使用する

データにメッセージを受け付けるオブジェクトであるかのように扱うと、新たに2つの問題が生じる

---

SREチーム
* 可用性の確保
* レイテンシの低減
* パフォーマンスの管理
* 作業の効率化
* 変更管理
* モニタリング
* 障害対応
* キャパシティ管理

といった日常業務を担当し、ソフトウェア開発の能力が求められる。

---

なんの本で読んだか忘れた言葉
「オブジェクトに基づく設計から、メッセージに基づく設計にシフトした時、...」忘れた。確かDDDかRubyで学ぶオブジェクト指向設計の本に書いていた気がする

---

なんかメモを整理するのが楽しくなってきた


この記事が気に入ったらサポートをしてみませんか?