オブジェクト指向のディレクトリ構造の調査と設計

1: デフォルトの名無しさん 2021/03/07(日) 18:10:08.57 ID:j0hLt10R

オブジェクト指向云々を議論するのは構いませんが、
結局ソースファイルがどこなのか分からなければ
話にならないことを忘れてはならないと思う。

大変なのは、プログラミングそのものより、
自分が手を加えなければいけないのはどの
ソースファイルでどのメソッドなのかということや
どこにディレクトリりを作ってどこに配置をすればいいか
決めることではないのか?

継承やポリモーフィズム、オーバーライド
抽象クラス、インタフェースとか使いこなすのは構わないが
ソースがどこにあるか余計わからなくなるようでは
後から参加する人が困ります。

また、ディレクトリ構造にはソースファイルが
だけがあるわけではない。
HTMLや画像や音声や設定ファイルや
JSON,XMLファイル、アプリ特有の特殊なバイナリ
だってあるんだ
これらをどう配置すればいいかなんて誰も教えてくれない
じゃないですか。

2: デフォルトの名無しさん 2021/03/07(日) 18:16:25.38 ID:j0hLt10R

もっと最悪なのは
外部ソースをインクルードする文
そのものが変数化されてたり
関数型プログラミングやリフレクションにかぶれて
関数とかクラスが変数化されていることにより
実行されているソースそのものが
ソース読んだだけじゃ追いにくくなってたり

フレームワークの特殊な命名規約や
特殊ルール知ってないと、どこに処理が飛んでるのか
ソースを追えなくなったりすることが多すぎる。

新人とかに実装投げても、3時間経ってもまだ
ソース探してんだよ。
状況を聞くと「こりゃ初見じゃ無理だ。」って
思わざるを得ないことが多い。
俺が全部ソース探し手伝わなきゃならんのか?

 

3: デフォルトの名無しさん 2021/03/07(日) 18:25:47.99 ID:WtkfuJ8m
最初は手伝ってやればいいじゃん、そのうち慣れるよ

 

4: デフォルトの名無しさん 2021/03/07(日) 19:38:28.77 ID:vyuBuDwH
意訳 ディレクトリ構造=クラス構造のJavaは先見の明があったな

 

5: デフォルトの名無しさん 2021/03/07(日) 21:41:35.36 ID:OPAOeHk0
初心者は何をやるにしたってつまづくんだから教えてやれよで終わり

 

6: デフォルトの名無しさん 2021/03/08(月) 07:02:54.02 ID:v29abKC6
ちゃんとモデル設計しろよ

 

7: デフォルトの名無しさん 2021/03/08(月) 08:16:33.09 ID:hs7WEJ4d
ディレクトリ構造をドキュメントに落としてないとこなんてあるのか
新しく参加した開発者に最初に説明する内容でしょ

 

9: デフォルトの名無しさん 2021/03/08(月) 17:24:21.89 ID:L/PaohrV

でも親子クラスの配置とか
抽象クラスやインタフェースと
実装クラスの配置まで考えて言うほど厳密に
ディレクトリ設計するか?

あと共通してどこからでも呼び出される
モジュールや関数とか

HTMLの共通外枠テンプレとか共通組み込み画面部品とか
CSSやJavaScriptの共通読み込みファイルとか
何だかんだグダグダになってカオス化しやすいイメージ
特に画面の部品はDIYを捨てて共通化せずに
画面とファイルが1対1の関係で使い捨てた方が絶対いい
コピペだってDIYだろ
画面だけは無闇に動的変動要素だらけにせずに直書きの方がメンテしやすい
バックエンドは共通化すべきだが

 

11: デフォルトの名無しさん 2021/03/09(火) 10:55:45.61 ID:xG3jZtoX
>>9
一般的には抽象クラスやインタフェースや実装クラスみたいな形式的種別でどのディレクトリに置くかを決めたりしない
各ファイルが持ってる責務で決める

 

12: デフォルトの名無しさん 2021/03/09(火) 11:00:09.58 ID:p4cuNQqC
>>11
その理屈だとテストディレクトリなんてものは作らずに
ソースコードと同じ所にテストコードも置くべきということになるが?

 

13: デフォルトの名無しさん 2021/03/09(火) 11:40:48.72 ID:vAevlrlc
>>12
それどんな理屈だよw

 

14: デフォルトの名無しさん 2021/03/09(火) 11:41:59.83 ID:SVNbCZD4
>>13
責務できめるからだろ

 

15: デフォルトの名無しさん 2021/03/09(火) 11:43:39.71 ID:kMVDaOhq
>>14
テストコードの責務をなんだと思ってるの???

 

16: デフォルトの名無しさん 2021/03/09(火) 11:45:38.48 ID:SVNbCZD4
>>15
インターフェースの責務をなんだと思ってるの?

 

26: デフォルトの名無しさん 2021/03/09(火) 12:43:00.42 ID:z04g+BkK

>>11
> 一般的には抽象クラスやインタフェースや実装クラスみたいな形式的種別でどのディレクトリに置くかを決めたりしない

理解できたか?ケースバイケースということだ

 

29: デフォルトの名無しさん 2021/03/09(火) 13:23:04.54 ID:uEPsHiDJ

>>26
そのケースもインターフェースという形式的種別で分けてるわけじゃないんだよ
アプリケーションの中でそのファイルが果たすべき”責務”によって分けてる

“責務”がわからんと話通じないだろうけどね

 

32: デフォルトの名無しさん 2021/03/09(火) 16:08:39.80 ID:MbPysK70
>>29
責務とは何かね

 

10: デフォルトの名無しさん 2021/03/08(月) 18:14:20.77 ID:aw2IeuYt

ディレクトリ構造ってのはアプリケーションアーキテクチャの設計を反映したものなんよね

開発者にとってはディレクトリ構造がコードレベルでアーキテクチャを理解するための第一歩

 

17: デフォルトの名無しさん 2021/03/09(火) 12:00:20.58 ID:uT9d2fS/
なるほどなー 責務という言葉だけでは理解できない人もいるんだな
勉強になったわ

 

18: デフォルトの名無しさん 2021/03/09(火) 12:09:40.76 ID:z04g+BkK
はい、説明できずに逃げたー

 

19: デフォルトの名無しさん 2021/03/09(火) 12:20:35.95 ID:MbPysK70

責務は能力と権限をセットにしたもの

テストとテストでないプログラムは機能も実行タイミングもアクターも違うので
分けていいと思うけど、パッケージプライベートのクラスをテストするために
クラスパスを同じにすることはあるよねー

 

21: デフォルトの名無しさん 2021/03/09(火) 12:24:00.63 ID:z04g+BkK
>>19
はいはい、その理屈だと
インターフェースも機能も実行タイミングもアクターも違うので
ディレクトリは分けるべきだと言ってますー

 

22: デフォルトの名無しさん 2021/03/09(火) 12:25:31.45 ID:MbPysK70
>>21
apiパッケージとimplパッケージにわけることあるよね
ケースバイケースで良いと思うよ

 

20: デフォルトの名無しさん 2021/03/09(火) 12:22:01.57 ID:MbPysK70
同じディレクトリにテストを置くのはそれはそれで良いところもあるよね
ケースバイケースで

 

23: デフォルトの名無しさん 2021/03/09(火) 12:29:00.23 ID:z04g+BkK
インターフェースをディレクトリに分けるケースは出た
わけないケースはないのだろうな
ケースバイケースだが、わけないケースを言わないということはそうなる

 

24: デフォルトの名無しさん 2021/03/09(火) 12:29:31.86 ID:MbPysK70
>>23
分けなくてもいんじゃない?

 

25: デフォルトの名無しさん 2021/03/09(火) 12:30:49.37 ID:MbPysK70
インタフェイスと実装が同じパッケージに存在しても問題ないよ
ケースバイケースだよ

 

27: デフォルトの名無しさん 2021/03/09(火) 12:44:27.53 ID:MbPysK70
責務で決めるのもケースの一つじゃないかな

 

28: デフォルトの名無しさん 2021/03/09(火) 12:44:49.01 ID:MbPysK70
一般的だと思うよ

 

30: デフォルトの名無しさん 2021/03/09(火) 13:31:39.94 ID:23EnNN7A
syntaxとsemanticsの違いが分からないみたいな感じかな?
文脈によってsemanticsは変わるから見えてる景色が違うんだろう

 

40: デフォルトの名無しさん 2021/03/10(水) 18:06:48.08 ID:MCvoFBii

>>30
その「責務」ってやつが
クラス設計者の頭の中で構築されて
各プログラマで推測することでしか共有認識されない事が
オブジェクト指向そもそもの問題点なんだよ。

責務というものはコード上から機械的に追うことは不可能
クラス名から推測するしかなくて
そのクラスを格納するディレクトリ名などからしか
推測することしか出来ない
どんなにコメントを書いても、
UMLや仕様書をかいたところで
認識は各メンバーでどうしても微妙にズレていく

 

41: デフォルトの名無しさん 2021/03/10(水) 18:50:40.75 ID:8NWvnedP
>>40
最低限の核になる部分の設計意図ぐらいちゃんと文章を書けって話だろ
どうとでも解釈出来る図や表ばっかりじゃなくてな
それが出来ないというかやろうともしない失語症みたいな人間が山ほど居てウンザリするけどな

 

42: デフォルトの名無しさん 2021/03/10(水) 19:00:18.05 ID:oeJexwIy
>>40
その文章力だと何やっても無理
オブジェクト指向とか関係なく君がクソなだけ

 

43: デフォルトの名無しさん 2021/03/10(水) 19:50:30.68 ID:NxUYWl/k

>>40
コード上から機械的に追うことが可能なものだけしか見ないから
いつまで経ってもクソプログラマーなんだぞ

クソコードスレのやつらと一緒だな

 

31: デフォルトの名無しさん 2021/03/09(火) 15:55:56.08 ID:p7a+eowO

形式と意味と意図
これらを区別して考えられないやつはクソプログラマー
クソプログラマーほど意図ではなく形式に意識が向かう

なぜか?

 

33: デフォルトの名無しさん 2021/03/09(火) 16:09:57.46 ID:MbPysK70
>>31
数学会の主流は形式主義だからプログラミングも形式を追求することによって圧倒的な成長を遂げると思うの

 

34: デフォルトの名無しさん 2021/03/09(火) 22:10:14.60 ID:BIanm+fj
形から入っている奴は結局ダメ
そもそもオブジェクト指向と言っても継承やらを必ず使う必要は全然無い訳で
クラスをブラックボックスで利用出来るようにするぐらいで十分
それが知らない奴はそういう実装が出来ない訳だがw

 

37: デフォルトの名無しさん 2021/03/10(水) 00:46:53.36 ID:yFwP4B8e
形から入るやつはダメというのも一つの形だから自己矛盾なんですね

 

38: デフォルトの名無しさん 2021/03/10(水) 00:47:33.24 ID:yFwP4B8e
ところで君たちエヴァンゲリオンは観たのかい?

 

39: デフォルトの名無しさん 2021/03/10(水) 09:43:24.16 ID:vUFReCtH
平成時代に見たよ

 

48: デフォルトの名無しさん 2021/03/12(金) 00:28:34.58 ID:bK2JcbQx
「オブジェクト指向」って単語スレタイに入ってるといつもの人来るの草

 

50: デフォルトの名無しさん 2021/03/12(金) 13:01:29.82 ID:5NoXColr

日本語には意志動詞と無意志動詞という区別があってだな
意志動詞はその主体が意志を持って動作を行っている様を表現したいときにのみ使うもの

オブジェクト指向と擬人化思考の相性がいい理由の一つ

 

58: デフォルトの名無しさん 2021/03/24(水) 20:02:06.41 ID:jO3PWgho
全部自分で書いて試せるだろうよ

 

44: デフォルトの名無しさん 2021/03/10(水) 21:07:59.45 ID:oNaV9oC3
末端プログラマの考え方が学べる良スレ

管理人からひと言

みんなどうしてるか気にはなる

引用元

http://toro.2ch.sc/test/read.cgi/tech/1615108208/

関連記事

  1. カテゴリ_プログラム

    アプリとサイトを作りたいんだが、どんなプログラミング言語から始めればいいんだ?

  2. 【IT】還暦COBOLはお荷物?リプレース計画が独自調査で判明

  3. デスマーチの原因は「オブジェクト指向」だった

  4. 2020年以降で需要のあるプログラミング言語(Web系)って何?

  5. ワイが4日をかけて作り上げたプログラム欲しい人いる

  6. UNITY始めたけど凄いゲーム作れんわ

  7. 【プログラミング】「Perl 7」が発表 ~来年にも四半世紀ぶりのメジャーバージョンアップへ

  8. Javaのプログラミング学び始めたんやが

  9. HPを作りたいんだが

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

最近の人気記事

おすすめ記事

新着記事

  1. 【プログラミング】Webエンジニアとかいうやつが最高にウザい
  2. Webエンジニアで年収270万スタートから900万まで登り詰めたんだけどさ
  3. 来年からWEBエンジニアになるんだけど副業で小中学生向けのプログラミング家庭教師…
  4. CPUクーラーって絶対に水冷がええの?
  5. AIに食われるの確定してるのに今プログラマーになろうと勉強してる奴なんなの?

ボンブの戯言

  1. 【ボンブの戯言】フリーランスの実態調査をITエンジニアフリーランスの視点から見て…
  2. 【ボンブの戯言】ITエンジニアがフリーランスになるときに考える・準備すること
  3. 【ボンブの戯言】はじめました。
  4. 【ボンブの戯言】ITエンジニアは、なぜうつ病になるのか
  5. 【ボンブの戯言】ITエンジニアがフリーランスになる理由
PAGE TOP