質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

デザインパターン

デザインパターンは、ソフトウェアのデザインでよく起きる問題に対して、解決策をノウハウとして蓄積し再利用出来るようにした設計パターンを指します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

ドメイン駆動設計

ドメイン駆動設計(Domain-driven design, DDD)とは、ソフトウェアの設計手法、および設計思想や哲学のことです。ドメインモデル構築の際に、設計上の判断を決定する枠組みとドメイン設計に関して議論するボキャブラリを提供するものです。

Q&A

解決済

2回答

505閲覧

FatModelにならないような、意味が一貫した「キレイな」コードを書く感覚を鍛える方法はありますか?

puyotaro

総合スコア24

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

デザインパターン

デザインパターンは、ソフトウェアのデザインでよく起きる問題に対して、解決策をノウハウとして蓄積し再利用出来るようにした設計パターンを指します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

ドメイン駆動設計

ドメイン駆動設計(Domain-driven design, DDD)とは、ソフトウェアの設計手法、および設計思想や哲学のことです。ドメインモデル構築の際に、設計上の判断を決定する枠組みとドメイン設計に関して議論するボキャブラリを提供するものです。

0グッド

0クリップ

投稿2020/07/11 09:56

既存実装の改修であれば、変更範囲やコストパフォーマンスを鑑みてコードレビューは簡単に通るのですが、新規開発では「既存実装のリファクタリングから新規実装を行う」ので、コードレビューでたくさん指摘されてしまいます。
根拠のないクラス分割は普段からやっているのですが、将来を見通した根拠をもってキレイなコードを書くことができていない状態です。

自分でも勉強しようとして、設計に関する本を読んでいても題材として取り上げているシステムへの理解が進まずイマイチ理解度はあがっていません。

キレイなコードを書く能力を鍛える方法は、がんばって本をたくさん読む、OSSをたくさん読む、たくさん仕事する、以外にないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gentaro

2020/07/11 10:03

「キレイ」というのが主観的な評価なので客観的な回答が得られるとは思いませんが、「たくさん指摘」を受けた中にヒントはないんですか?なぜそのような指摘をされたのか、質問してみれば良いと思いますが。
puyotaro

2020/07/11 10:24 編集

コメントありがとうございます!レビューの中でヒントはたくさんあって、指摘という部分的な正解(のようなコメント)は提示してくれています。 対話するのよさそうです。ただ、たくさん指摘されてしまうと私が萎縮してしまうんですよね。。
guest

回答2

0

ベストアンサー

こんにちは。

経験を積むしかないですが、ひとつ、道筋を示すことはできます。
一言で言うと、

クラスやインターフェース、メソッドの「名前」を見ただけで、それが何なのか推測できるようになっているかを常に意識してください。

しっくりくる名前が付けられないときは、責務を持ちすぎか、分割すべきでない分割をしています。
例えば、「○○Manager」という名前が悪いと言われるのは、「○○を管理するモノ」と言われても何ができるものか伝わらないからです。
役割と性質をそれぞれの「モノ」に持たせることができていれば、それらは適切な「名前」を持ち、自ずとあなたの言う「キレイな」コードに近づきます。

投稿2020/08/12 07:20

tamoto

総合スコア4105

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

puyotaro

2020/08/22 07:16

ありがとうございます!! 勉強になります! m(_ _)m
guest

0

Ericさんはこういううずまきのプロセスを推奨しています。
https://domainlanguage.com/ddd/whirlpool/
他にもTDDを活用する方法がありそうです。

理想のモデルには一足飛びに辿り付けないので、繰り返しのプロセスで改善を重ねていけばよいのではないでしょうか?

あと、実装(ドメインオブジェクト)をいくら素晴らしいものにしようとしても、仕様(ドメインモデル)が複雑であったり難解で手に負えないものだと意味がありません。必要に応じて仕様も変える必要あり、仕様を変えると業務の変更も必要だったりします。対象の問題をよく理解・分析することも「キレイな」コードを書くために必要な条件です。そういったコード外のコードに強い影響を与えるものに関心を向けることも必要だと思います。

投稿2020/08/11 17:09

j5ik2o

総合スコア41

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

puyotaro

2020/08/22 07:16

ありがとうございます!! ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問