アルゴリズムとかデザパタを覚えたりJavaScriptのライブラリを
練習しまくると
・配列や連想配列ほかデータ構造や制御構文、オブジェクト、関数、メソッド、
をどうやって「どうやって組み合わせるか」がなんとなくコツが掴めてくる。
(でもこれらの公式みたいなのは出来上がってなくて、自分と違う組み合わせ方
をしている人のコードを見てしまうと混乱する。)
・つまり、「呼び出し側で変数、関数、配列、制御構文、オブジェクト、メソッド」をどうやって配置するのかって、「絶対の公式」が規定されていないから、組み合わせは 人それぞれなのかな?
→一度変数に保持してからその変数を使う人もいるし、
if文の条件分岐や関数呼び出しの () の中で更に別の式をごっそり詰め込んで
その内部の() の中に更に別の式を詰め込んでしまう人もいる。
配列の[] 内に結構長い式を詰め込む人もいる。
オブジェクトのクラス定義だと、メソッドやコンストラクタに渡す「引数名」
とクラスの「メンバ変数名」が同じで、
メソッド内の内のローカル引数名とメンバ変数がどっちなのか混乱することが
よくある。
・デザインパターンを覚えたことでこれらの組み合わせのコツをなんとなく掴んだが、今度は「複数のデザインパターンを組みわせて」もっと大きなものを作るときの
「組み合わせ方」が上手くつかめない。
・そこで、これらの「組み合わせ方」について議論するスレを立てました。
実行側でのコード構造の組み合わせ方 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/09/03(日) 02:53:52.62ID:V/LSJTV52017/09/03(日) 07:48:03.86ID:DIhXI1rF
> 今は、XML の設定ファイルから、クラスを動的に作る、DI が流行ってる
DIでXML使うとか何年前だ?
Javaでだってアノテーションを使う
XMLは使わない。
それにクラスは動的に作らない。
いや動的に何も作らない。
インスタンスの生成をDIがやってくれるだけ
DIでXML使うとか何年前だ?
Javaでだってアノテーションを使う
XMLは使わない。
それにクラスは動的に作らない。
いや動的に何も作らない。
インスタンスの生成をDIがやってくれるだけ
13デフォルトの名無しさん
2017/09/03(日) 07:58:18.36ID:V/LSJTV5 とはいっても今ならXMLはJSONとかYMLに置き換わるってのは分かるな。
古い本でも、「考え方だけ」は吸収できるなら読んでみてもいいかも。
今のツールは便利すぎて、なんでも自動でやってくれるから逆に
「何やってるかわからない」状態になってるし古い本から学習するのも
悪くはないな。
古い本でも、「考え方だけ」は吸収できるなら読んでみてもいいかも。
今のツールは便利すぎて、なんでも自動でやってくれるから逆に
「何やってるかわからない」状態になってるし古い本から学習するのも
悪くはないな。
2017/09/03(日) 11:21:57.76ID:Tnu26RxG
>>11
XML地獄になってたのはいつの時代だったかな
XML地獄になってたのはいつの時代だったかな
2017/09/03(日) 15:23:45.09ID:LluVimQv
16デフォルトの名無しさん
2017/09/03(日) 15:50:10.73ID:ULbykCIX 結城さんのJava入門本が親切で分かりやすかったから
昔デザパタ本も買ったんだけどこっちの方は
たしかに原則の説明がぜんぜん無いんだよな
なんでこうなってるのっていう
本が出た当時にそこまで詳しく
自信持って説明できないとかあるかもしれないが
そういう原理原則はやはり元祖の
GOF本の方が圧倒的に詳しい
昔デザパタ本も買ったんだけどこっちの方は
たしかに原則の説明がぜんぜん無いんだよな
なんでこうなってるのっていう
本が出た当時にそこまで詳しく
自信持って説明できないとかあるかもしれないが
そういう原理原則はやはり元祖の
GOF本の方が圧倒的に詳しい
2017/09/03(日) 16:57:51.40ID:LluVimQv
>>6
これはデザインパターンやコードの組み合わせみたいな実装レベルの話ではなくて
実現したいことをコードにするまでに必要な要件定義や設計レベルの話
Amazonの例でスレ立てしてたのと同じ人でしょ?
実現したいことをコンポーネントに分解して考えて
コンポーネント単位の組み合わせで目的を達成できるように考える
コンポーネントへの分解は再帰的に徐々に細部へ向かって行う
家を部屋に分解して考えて、部屋を床・天井・柱・壁・ドア・窓に分解して
柱を素材、長さ、径、接合方法みたいに分解して考えるようなもの
柱の細部が決まれば身につけた木材加工技術をどう使えばいいかイメージできる
ソフトウェアをどういう風に分解して考えればいいかは経験によるところが大きいけど
まずは一般的な設計手法を学んでそれを適用していけばいいと思う
ユースケースを洗い出して機能面から構成要素を整理する方法とかね
これはデザインパターンやコードの組み合わせみたいな実装レベルの話ではなくて
実現したいことをコードにするまでに必要な要件定義や設計レベルの話
Amazonの例でスレ立てしてたのと同じ人でしょ?
実現したいことをコンポーネントに分解して考えて
コンポーネント単位の組み合わせで目的を達成できるように考える
コンポーネントへの分解は再帰的に徐々に細部へ向かって行う
家を部屋に分解して考えて、部屋を床・天井・柱・壁・ドア・窓に分解して
柱を素材、長さ、径、接合方法みたいに分解して考えるようなもの
柱の細部が決まれば身につけた木材加工技術をどう使えばいいかイメージできる
ソフトウェアをどういう風に分解して考えればいいかは経験によるところが大きいけど
まずは一般的な設計手法を学んでそれを適用していけばいいと思う
ユースケースを洗い出して機能面から構成要素を整理する方法とかね
2017/09/03(日) 17:08:39.98ID:LluVimQv
>>6
1. 自動いいねクリックツール
2. 配信
3. 決済
4. ライセンス管理
1. 自動いいねクリックツール
1-1. アカウント管理
1-2. ブログのURL管理
1-3. 巡回機能
- ログイン機能
- ブログページ遷移機能
- いいねクリック機能
- …
1-4. スケジューリング機能
1-5. …
例えば上みたいに分解して考えて
いいねをクリックする機能だけを考えれば、
DOM要素の取得方法やクリックイベントの発火方法っていう
JavaScriptのプログラミング本読めば理解できる詳細度になるから
どうプログラミングすればいいかわかるでしょ?
1. 自動いいねクリックツール
2. 配信
3. 決済
4. ライセンス管理
1. 自動いいねクリックツール
1-1. アカウント管理
1-2. ブログのURL管理
1-3. 巡回機能
- ログイン機能
- ブログページ遷移機能
- いいねクリック機能
- …
1-4. スケジューリング機能
1-5. …
例えば上みたいに分解して考えて
いいねをクリックする機能だけを考えれば、
DOM要素の取得方法やクリックイベントの発火方法っていう
JavaScriptのプログラミング本読めば理解できる詳細度になるから
どうプログラミングすればいいかわかるでしょ?
19デフォルトの名無しさん
2017/09/04(月) 01:11:23.53ID:Vywqvl3J >>6
その例を作る時に自分がどう考えるかを以下に書くと
まず
1. いいね!を自動でクリックする仕組み
2. GUI
3. お金を入金させる仕組み
くらいに分割してそれぞれの部品を作って組み合わせようと思う。
ここで、それぞれの部品ごとに更に細かく分割できるものは分割していく。
例えば1は
1-1. 自分のアカウント情報を取得する(GUIから?データベース?)
1-2. 自分のアカウントでログインする
1-3. 特定の記事の「いいね!」を押す
のように分割。
1-1.でアカウント情報を取得するけど、初回はGUIで入力させて
次回からは自動ログインさせたいなと思えば、
1-1-1. 初回の場合は以下を実行
1-1-1-1. GUIからアカウント情報を取得
1-1-1-2. アカウント情報DBに保存
1-1-2. DBからアカウント情報を取得
というようにブレークダウンしていく。
1-1-2. DBからアカウント情報を取得
くらいまでいけば、DBモジュールが必要で、アカウントクラスを作ったほうが良さそうというのが見えてくる。
その例を作る時に自分がどう考えるかを以下に書くと
まず
1. いいね!を自動でクリックする仕組み
2. GUI
3. お金を入金させる仕組み
くらいに分割してそれぞれの部品を作って組み合わせようと思う。
ここで、それぞれの部品ごとに更に細かく分割できるものは分割していく。
例えば1は
1-1. 自分のアカウント情報を取得する(GUIから?データベース?)
1-2. 自分のアカウントでログインする
1-3. 特定の記事の「いいね!」を押す
のように分割。
1-1.でアカウント情報を取得するけど、初回はGUIで入力させて
次回からは自動ログインさせたいなと思えば、
1-1-1. 初回の場合は以下を実行
1-1-1-1. GUIからアカウント情報を取得
1-1-1-2. アカウント情報DBに保存
1-1-2. DBからアカウント情報を取得
というようにブレークダウンしていく。
1-1-2. DBからアカウント情報を取得
くらいまでいけば、DBモジュールが必要で、アカウントクラスを作ったほうが良さそうというのが見えてくる。
2017/09/04(月) 03:29:50.38ID:rap19dI3
>>19
ナイストライ
分割の切り口や抽象度がバラバラなのがちょっといただけないかな
意識して揃える努力が必要
機能分割は垂直方向の切り口、GUIやDBは水平方向の切り口なので方向が全く違う
それにこのレベルでどういう機能が必要かを考えている時にはGUIやDBみたいな実装の詳細を混ぜるのは良くない
そっちに気が取られて本当に必要な機能を考えられなくなるから。
入力方法や保存方法はもっと詳細段階で検討して決めていけばいい内容
あと機能の単位はユーザーから見てまとまった一つの仕事を最小単位として考えたほうがいい
「アカウントを登録」と「アカウント情報をDBに保存」の違い
DBに保存やDBから取得というコードは必要かもしれないけどそれはプログラム内部の事情
$ add_account <account/email> <password>
$ save_account_to_db
例えばコマンドラインツールで書いた場合に
save_account_to_dbはadd_accountの内部で呼び出されるかもだけど
自分で直接呼び出して使いたいコマンドではないよね
少し細かいと思うかもしれないけど
上で書いたような部分を意識していくと抽象化思考が鍛えられると思うよ
ナイストライ
分割の切り口や抽象度がバラバラなのがちょっといただけないかな
意識して揃える努力が必要
機能分割は垂直方向の切り口、GUIやDBは水平方向の切り口なので方向が全く違う
それにこのレベルでどういう機能が必要かを考えている時にはGUIやDBみたいな実装の詳細を混ぜるのは良くない
そっちに気が取られて本当に必要な機能を考えられなくなるから。
入力方法や保存方法はもっと詳細段階で検討して決めていけばいい内容
あと機能の単位はユーザーから見てまとまった一つの仕事を最小単位として考えたほうがいい
「アカウントを登録」と「アカウント情報をDBに保存」の違い
DBに保存やDBから取得というコードは必要かもしれないけどそれはプログラム内部の事情
$ add_account <account/email> <password>
$ save_account_to_db
例えばコマンドラインツールで書いた場合に
save_account_to_dbはadd_accountの内部で呼び出されるかもだけど
自分で直接呼び出して使いたいコマンドではないよね
少し細かいと思うかもしれないけど
上で書いたような部分を意識していくと抽象化思考が鍛えられると思うよ
21デフォルトの名無しさん
2017/09/04(月) 03:59:09.32ID:1WZzzPPH >> 20
つまり「引数をユーザーが指定するかしないか」で
コマンドとかメソッドは分割せよってことかな。
下の「save_account_to_db」は、「ユーザが与える引数がない」から、
「ユーザは自分で使いたくない」従って「内部に隠蔽されるべき」であると。
あぁ、でも「ls」みたいなのは例外だね。
引数なしだけど「現在の情報を表示して確認したい。」ものは隠蔽しない
という訳だ。
つまり「引数をユーザーが指定するかしないか」で
コマンドとかメソッドは分割せよってことかな。
下の「save_account_to_db」は、「ユーザが与える引数がない」から、
「ユーザは自分で使いたくない」従って「内部に隠蔽されるべき」であると。
あぁ、でも「ls」みたいなのは例外だね。
引数なしだけど「現在の情報を表示して確認したい。」ものは隠蔽しない
という訳だ。
2017/09/04(月) 23:48:30.00ID:rap19dI3
>>21
コマンドやメソッドの分割につながることはつながるけどそれはここでの本質とは関係ない
それに引数の有無もこの場合ほとんど関係ない
自分の作るソフトウェアの境界がどこにあって
その境界を挟んでユーザーとソフトウェアにどういう抽象度でインタラクションさせたいかが大事
一度命令を覚えさせればほぼ何でもできる使い魔がいるとして、そいつに
「このアカウント情報あとで使うから覚えといて」って命令したいのか
「このアカウント情報をあそこの本棚にある2番目のファイルに綴じといて」って命令したいのかの違い
下の擬似コードみたいに実際のコードでも骨格になる部分は
GUIかどうかやDBかどうかには依存してない
一般的にはそのほうがコードの質も高くなる
「〇〇さんのブログ、いいねをクリックしといて」のコマンド例
$ click_nice <blog_name>
擬似コード例
click_nice(blog_name){
login
visit url[blog_name]
click nice_button if updated
}
コマンドやメソッドの分割につながることはつながるけどそれはここでの本質とは関係ない
それに引数の有無もこの場合ほとんど関係ない
自分の作るソフトウェアの境界がどこにあって
その境界を挟んでユーザーとソフトウェアにどういう抽象度でインタラクションさせたいかが大事
一度命令を覚えさせればほぼ何でもできる使い魔がいるとして、そいつに
「このアカウント情報あとで使うから覚えといて」って命令したいのか
「このアカウント情報をあそこの本棚にある2番目のファイルに綴じといて」って命令したいのかの違い
下の擬似コードみたいに実際のコードでも骨格になる部分は
GUIかどうかやDBかどうかには依存してない
一般的にはそのほうがコードの質も高くなる
「〇〇さんのブログ、いいねをクリックしといて」のコマンド例
$ click_nice <blog_name>
擬似コード例
click_nice(blog_name){
login
visit url[blog_name]
click nice_button if updated
}
23デフォルトの名無しさん
2017/09/05(火) 12:18:54.88ID:tSgzDD57 >>22 あ~それUMLの本とかにそんなこと書いてあったような・・
ちょっと見返してみるわありがとう。
使い魔っていうのはすげえよく分かるわ、たまにコマンドとかライブラリを
さん付けで呼ぶ人要るけど、そんな感じだよね。
自分のやりたいことを2chに書くのは恥ずかしいけどその分、具体的な
アドバイスを貰えるもんだな。参考にさせて頂きます。
ちょっと見返してみるわありがとう。
使い魔っていうのはすげえよく分かるわ、たまにコマンドとかライブラリを
さん付けで呼ぶ人要るけど、そんな感じだよね。
自分のやりたいことを2chに書くのは恥ずかしいけどその分、具体的な
アドバイスを貰えるもんだな。参考にさせて頂きます。
24デフォルトの名無しさん
2018/05/23(水) 21:48:26.24ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
VXVZ7
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
VXVZ7
25デフォルトの名無しさん
2018/07/05(木) 00:13:08.77ID:RfoszcD2 VSD
26デフォルトの名無しさん
2019/04/27(土) 03:53:02.68ID:2v+ScY9b き
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 東京都「都民の税金1.5兆円が国に奪われている」「全国に分配されている」に地方民ブチギレ [Hitzeschleier★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 [蚤の市★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★4 [Hitzeschleier★]
- 自民・麻生太郎副総裁 石破政権の1年は「どよーん」 高市政権発足で「何となく明るくなった」「世の中のことが決まり動いている」★2 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
