Upload
Download free for 30 days
Login
Submit Search
Goのシンプルさについて
4 likes
4,619 views
pospome
Goのシンプルさについて
Software
Read more
1 of 28
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
More Related Content
ODP
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
PDF
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
KEY
やはりお前らのMVCは間違っている
Koichi Tanaka
PDF
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
PDF
PostgreSQLアンチパターン
Soudai Sone
PDF
SQLアンチパターン - ジェイウォーク
ke-m kamekoopa
PDF
例外設計における大罪
Takuto Wada
PDF
オブジェクト指向できていますか?
Moriharu Ohzu
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
やはりお前らのMVCは間違っている
Koichi Tanaka
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
PostgreSQLアンチパターン
Soudai Sone
SQLアンチパターン - ジェイウォーク
ke-m kamekoopa
例外設計における大罪
Takuto Wada
オブジェクト指向できていますか?
Moriharu Ohzu
What's hot
(20)
PDF
ソースコードの品質向上のための効果的で効率的なコードレビュー
Moriharu Ohzu
PDF
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨
PDF
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
PDF
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
Koichiro Matsuoka
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
PDF
オブジェクト指向エクササイズのススメ
Yoji Kanno
PDF
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
PDF
正しいものを正しく作る塾-設計コース
増田 亨
PDF
3分でわかるAzureでのService Principal
Toru Makabe
PDF
怖くないSpring Bootのオートコンフィグレーション
土岐 孝平
PPTX
「DNS浸透いうな」と言うけれど… (#ssmjp 2018/07)
Yoshikazu GOTO
PDF
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
PPTX
やってはいけない空振りDelete
Yu Yamada
PDF
Pythonによる黒魔術入門
大樹 小倉
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
PDF
DDDを実践できるエンジニアを育成するための取り組みについて
BIGLOBE Inc.
PDF
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
PDF
ドメイン駆動設計 本格入門
増田 亨
PDF
継承やめろマジやめろ。 なぜイケないのか 解説する
TaishiYamada1
ソースコードの品質向上のための効果的で効率的なコードレビュー
Moriharu Ohzu
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
Koichiro Matsuoka
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
オブジェクト指向エクササイズのススメ
Yoji Kanno
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
正しいものを正しく作る塾-設計コース
増田 亨
3分でわかるAzureでのService Principal
Toru Makabe
怖くないSpring Bootのオートコンフィグレーション
土岐 孝平
「DNS浸透いうな」と言うけれど… (#ssmjp 2018/07)
Yoshikazu GOTO
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
やってはいけない空振りDelete
Yu Yamada
Pythonによる黒魔術入門
大樹 小倉
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
DDDを実践できるエンジニアを育成するための取り組みについて
BIGLOBE Inc.
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
ドメイン駆動設計 本格入門
増田 亨
継承やめろマジやめろ。 なぜイケないのか 解説する
TaishiYamada1
Ad
More from pospome
(9)
PDF
トランザクションスクリプトのすすめ
pospome
PDF
MicroServices & APIs
pospome
ODP
どこに何を書くのか?
pospome
PDF
アプリケーションコードにおける技術的負債について考える
pospome
PDF
Datastore/Go のデータ設計と struct の振る舞いについて
pospome
PDF
パッケージの循環参照
pospome
PDF
Controllerのbefore_actionにおける インスタンス変数セットについて
pospome
PDF
REST API のコツ
pospome
PDF
サーバサイドNodeの使い道
pospome
トランザクションスクリプトのすすめ
pospome
MicroServices & APIs
pospome
どこに何を書くのか?
pospome
アプリケーションコードにおける技術的負債について考える
pospome
Datastore/Go のデータ設計と struct の振る舞いについて
pospome
パッケージの循環参照
pospome
Controllerのbefore_actionにおける インスタンス変数セットについて
pospome
REST API のコツ
pospome
サーバサイドNodeの使い道
pospome
Ad
Goのシンプルさについて
1.
Goのシンプルさについて
2.
自己紹介 twitter : pospome blog
:pospomeのプログラミング日記 職種 : サーバサイドエンジニア 興味 : クラス設計全般, DDD アイコン:羊じゃなくてポメラニアンです
3.
Go からシンプルさを感じたことを話そうかと思います 時間限られているので サラッとしか説明できませんが・・・
4.
・package private ・コンストラクタ ・struct に
static な method
5.
・package private ・コンストラクタ ・struct に
static な method
6.
自分が触ったオブジェクト指向言語には アクセス修飾子として以下が用意されていた モジュールレベルの public, private クラスレベルの
public, protected, private
7.
特にクラスレベルのアクセス修飾子は強力 クラスは自分自身のプロパティ、メソッドに対して 公開、非公開をコントロールできる
8.
仮に 1つのモジュールに大量のクラスを突っ込んでも 触られたくないものをクラスレベルで隠すことができるので ある程度の秩序は保たれる 最悪モジュールの依存関係、粒度は気にしなくても なんとかなる
9.
なので、クラスをどう設計するかを重心する印象 普段モジュール同士の依存関係とか粒度とかって 考えて設計してますか?
10.
一方、Goにはパッケージレベルのアクセス修飾子しかない 同じパッケージであれば、 struct, function, value
は触り放題
11.
仮に 1つのパッケージ内に大量の struct を突っ込むと 全てが触り放題になってしまう 触られたくないものが存在する場合、 パッケージを分けて
package private にする必要がある
12.
つまり、Go では パッケージレベルのアクセス修飾子だけ考えればいい パッケージの循環参照が禁止なこともあり、 パッケージレベルで 粒度、公開範囲、依存方向を考えるべき struct ベースで考えてもこれらは解決できない struct
は保持する値と振る舞いの管理だけ考えればいい パッケージと struct で妙な責務の分離ができている
13.
シンプルな点 package private しかない パッケージレベルのアクセス修飾子しか提供しない
14.
・package private ・コンストラクタ ・struct に
static な method
15.
Go にはコンストラクタがない NewXxxx() という
function が コンストラクタのような役割を担っている 実質 static な factory method みたいな実装になる
16.
個人的にはコンストラクタよりも 実装パターンとしての static な factory
method が好き 「どんなオブジェクトを生成するのか」 をメソッド名で表現できるから
17.
シンプルな点 コンストラクタはないので function で実装する
18.
・package private ・コンストラクタ ・struct に
static な method
19.
Go では struct に
static な method を持たせることができない 最初は違和感しかなかったし、 static method 欲しかったので、 無理やりそれっぽい実装したこともあった
20.
ただ、最初に説明したとおり、 Go はパッケージを中心に考えた方がいい気がする 無理やり struct
に static method を持たせることに 違和感があるのも事実
21.
今では大人しく function で実装しています
22.
シンプルな点 struct に static
method は生やせないので function で実装する
23.
まとめ
24.
・package private しかない ・コンストラクタはない ・struct
に static method はない 削ることによってシンプルになっている
25.
個人的には多機能な言語は魅力的だった 自分のやりたいことに対して 何かしらの適切な選択肢が存在する
26.
ただ、Goを触ってみて、 多機能な言語は不適切な選択をしてしまうリスクも あると思った 例 「継承が悪いのではない、お前の使い方が悪いだけだ」
27.
Go から学んだシンプルさは 他の言語を書くときにも役立つと思う いろんな言語を触ってみるって大事ですね (´・ω・`)
28.
おわり
Download