X



プログラマの雑談部屋 ★24

■ このスレッドは過去ログ倉庫に格納されています
0001仕様書無しさん
垢版 |
2018/01/15(月) 03:10:30.67
プログラマは
こちらで雑談してください。
ユーザ、SEが馬鹿過ぎる、
上司が陰険だからもう辞めたい、
もう少しまともな仕事に転職したい、
彼女が欲しい、
などなど愚痴、妬み、妄想などなんでもどうぞ。
拘り押付け系ガイジ
(else禁止、継承不要、設計書不要ガイジ)、
コピペガイジは出入書込禁止
※前スレ
プログラマの雑談部屋 ★19
http://medaka.2ch.net/test/read.cgi/prog/1509711456/
プログラマの雑談部屋 ★20
http://medaka.2ch.net/test/read.cgi/prog/1510833848/
プログラマの雑談部屋 ★21
http://medaka.2ch.net/test/read.cgi/prog/1512205653/
プログラマの雑談部屋 ★22
http://medaka.2ch.net/test/read.cgi/prog/1513600297/
プログラマの雑談部屋 ★23
http://medaka.2ch.net/test/read.cgi/prog/1514877593/
0023仕様書無しさん
垢版 |
2018/01/15(月) 15:36:33.67
>>21
チームプレイなんだからワンマンプレイは歓迎されないだろ
0025仕様書無しさん
垢版 |
2018/01/15(月) 15:39:01.99
金もらってやるんだから、歓迎すべきでないのは素人レベルの奴
0027仕様書無しさん
垢版 |
2018/01/15(月) 17:02:36.86
>>20
最初に既存を参考に〜とか言えばいいのに
もう一番直してほしい書き方はルール化しちゃって今後はこういう書き方で でよくない?
0028仕様書無しさん
垢版 |
2018/01/15(月) 17:19:27.62
>>27
このケースみたいに周りに合わせられないタイプは、我が強いか、周囲に関心が無いんだと思う

改修を依頼した所で、

我が強いなら「今までこうやって来た!」って反発するし、
周囲に関心がないならそもそも周りがどういうコードを書いてるのか知らない

結果、指示した所だけ直して終わり
明日からも汚いコードを書き続けることになる

要するに空気が読めないアスペ
病気だから諦めるしかないよ
0029仕様書無しさん
垢版 |
2018/01/15(月) 17:44:44.24
>>7
自分と同じ書き方でないと読めないとか日曜プログラマに転職した方がいいんじゃないか
バグフィックスする時とかその人の書き方に合わせてやるぞ
あと流用ってコピペだろそういう設計が問題
それを譲っても元になる大事なとこなら外注に任せないだろ

まあパラダイムの世代が違うとかだと問題だが
0030仕様書無しさん
垢版 |
2018/01/15(月) 18:16:54.61
>>29
横からだけど、
流用を前提とした設計が良くないって言ってるように聞こえるけど何が問題なの?

というか時々ここで流用を否定してる奴がいるけどそれお前か?

流用を前提とした設計なり開発なんて基本中の基本だと思うんだけどその辺り詳しく教えてくれない?
0031仕様書無しさん
垢版 |
2018/01/15(月) 18:19:53.02
うーん、でもどんなコードかなんとなくわかるなぁ
ステータス1つにクラス1つ割り当てちゃうような作り方
0032仕様書無しさん
垢版 |
2018/01/15(月) 18:21:58.89
>>30
その人コピペ流用が駄目って言ってるだけに見えるけど
立ち位置ハッキリしてくんない?
流用駄目って言ってる人は俺には見当たらない
0033仕様書無しさん
垢版 |
2018/01/15(月) 18:22:18.13
既存コードがクソ過ぎるパターンもあるからな
古いやり方が手入れたとこだけ直してあるから真似したらアカンやつとか
0034仕様書無しさん
垢版 |
2018/01/15(月) 19:17:28.13
周りに合わせるとか全体主義かよ!
みなさんこれがジャップランド文化です
0035仕様書無しさん
垢版 |
2018/01/15(月) 19:20:06.54
設計の本質がわかりやすいコードであれば
人に合わせる技術が無ければ設計能力が低いと見られても仕方がない
0037仕様書無しさん
垢版 |
2018/01/15(月) 19:43:58.10
素材関係の大卒は理数系で良いの?

関数が理解できずにプログラムから離れた人が居たけど理数系ならAIエンジンくらい作れと思った
0038仕様書無しさん
垢版 |
2018/01/15(月) 19:45:32.06
毎回周囲に合わせると心に誓ってるのに
気が付いたらマイルールだらけになってる
がまんできない
0040仕様書無しさん
垢版 |
2018/01/15(月) 19:53:15.72
閏年のプログラムは取りあえず4で割れば良いよね?
次の特例は2100年。
知らねーよwww
0042仕様書無しさん
垢版 |
2018/01/15(月) 20:22:21.33
>>41
OracleのLastDayだったかで2100年と
2400年に対応したカレンダー組んだことあるけど、
その会社なくなってしまった。
0043仕様書無しさん
垢版 |
2018/01/15(月) 20:40:30.24
>>11
単純に脳みそのパラダイムが違うだけだろ
そいつは一人だけOOPの世界に生きてるけど、他の連中はそうではない
OOPできる奴とできない奴は絶対にチームを分けなきゃいかんのだが、PMが素人じゃしょうがねえか
0044仕様書無しさん
垢版 |
2018/01/15(月) 20:48:40.08
>>11
良し悪しはともかく単純にどんなコードか興味がある
実際のものに似せたコードをgistなり適当な場所に張り付けてくれ
0045仕様書無しさん
垢版 |
2018/01/15(月) 20:52:19.29
周りに合わせてスタイルを変えるってそうとう難しいよ
普通に将棋を指せる人間が全くのドシロウトの打ち筋を模倣してくださいつっても無理でしょ?
プログラムもそれと同じ
ある程度のスキル差があると下手なコードは書きたくても書けなくなる
5重にネストした分岐
10パターンを超えるスイッチ
100行を超えるメソッド
全く関連性のないビジネスがミックスインされた正体不明のクラス
正規化とは無縁のデータベース
模倣しろって言われてもどうすりゃいいんだって頭抱えるしかないよこんなの
0046仕様書無しさん
垢版 |
2018/01/15(月) 21:02:23.13
>>30
流用≒コピペ改変という意味で言ってるならパラメタライズして1回書けば終わりじゃん?
N回コピペしたら最低でもその処理の保守コストがN倍になる
依存ツリーまで辿ったらNのオーダーじゃ済まない
0048仕様書無しさん
垢版 |
2018/01/15(月) 21:13:46.51
空気読んだら同じ給料もらえるならいいけどな
もらえねえんだろうな
0049仕様書無しさん
垢版 |
2018/01/15(月) 21:22:01.47
問題はそのうち1か所だけ修正入れたいってなったときだ
0050仕様書無しさん
垢版 |
2018/01/15(月) 21:25:21.01
>>49
1箇所だけ呼び出し先を別のクラスなりメソッドに置き換えるだけ
問題になるわけがない
0051仕様書無しさん
垢版 |
2018/01/15(月) 21:31:42.53
そのメソッドは新規モジュールだから
コピペならなおしたとこだけテストすればいいが
共通化してあると新規部分として丸々テストしないといけない
0052仕様書無しさん
垢版 |
2018/01/15(月) 21:35:40.64
>>51
修正箇所とそれに依存するコードのテスト
新規作成箇所とそれに依存するコードのテスト

影響範囲は同じ

モジュール化してあればテストそのものが容易になるので低コスト
コピペじゃテストの範囲や仕方を考えるだけで絶望的
0053仕様書無しさん
垢版 |
2018/01/15(月) 21:48:00.27
影響範囲が同じでも
新規作成と一部修正じゃ
必要なテストケースの数がちがう

モジュール化でテストしやすくなるなら
部分ごとに同じモジュールを配置したっていい
0054仕様書無しさん
垢版 |
2018/01/15(月) 21:53:38.21
たとえ一箇所でしか使わないモジュールでも、
モジュールとしての意味構造を持たせようと努力する

ただ、なんでもかんでもデザパタでどうでもいいインターフェースを挟むのは、異論があるかもしれないね、コストもゼロではないし
0055仕様書無しさん
垢版 |
2018/01/15(月) 21:55:42.23
わからねえかなぁ
根本的に必要なテストボリュームは変わらない
どこをどうやってテストするのかがはっきりわかって簡単なのがモジュール
どこをどうテストするかはっきりせずテストそのものも難しいのがコピペ
これ常識

コピペするってことはその処理が別の処理に埋め込まれてしまうってこと
そうなると本来修正したかったことだけを分離してテストすることができないからテストの手間がめちゃくちゃ増える
0058仕様書無しさん
垢版 |
2018/01/15(月) 22:16:59.09
そう、>>7 >>11 のいうラッパーの多いコードというのが、実際どんなものか見てみたいものだねえ
0060仕様書無しさん
垢版 |
2018/01/15(月) 22:25:45.45
コピペもモジュール化もどっちもわかるんだよね
モジュールったって今回に使えるようになってる保証もないし
必要もない既存部分をいじってぶっ壊して文句言われるのは場所によっては最悪だ
一発で信用を失って終了の可能性もある
とするとこの環境でモジュール化の選択肢はない

コピペはまあ言わずもがなの問題が起きるが
範囲がコピペ部分に限定できるし
既存部分を壊すことはない
ってメリットもある

どっちもトレードオフの問題で
どちらを選択する可能性がある
って結論以外ねーだろこれ
議論にならない
0061仕様書無しさん
垢版 |
2018/01/15(月) 22:29:32.97
>>60
クソレガシー相手の商売は大変だね
テストも整備されてないコードベースとかどんだけ金積まれてもお断りだわ
0062仕様書無しさん
垢版 |
2018/01/15(月) 22:30:23.08
>範囲がコピペ部分に限定できるし
>既存部分を壊すことはない

ダウト
0063仕様書無しさん
垢版 |
2018/01/15(月) 22:31:33.39
>>58
やたらすげー勢いでラッパ作るソース見たことねぇ?
クラスも小粒でプロパティ1つ増やすのにクラス1個作っててそれが何の為かどこにも書いてなくてキレる
明らかに脳みそに異常がある奴のクラスの作り方
クラス図書かせたら回路図みてーになった
DBからデータ取ってくるだけなのに不思議
0064仕様書無しさん
垢版 |
2018/01/15(月) 22:32:56.51
>>61
環境をバカにするのはやめろ
どうせお前一人がきたって何もできねぇだろ
0066仕様書無しさん
垢版 |
2018/01/15(月) 22:35:24.25
JUnitやってると
コピペの圧力と関数化の欲求の間で悶え死ぬ
0067仕様書無しさん
垢版 |
2018/01/15(月) 22:36:23.14
>>63
それValueObjectだろ
ちゃんとしたシステムだと基本中の基本だぞ?
0068仕様書無しさん
垢版 |
2018/01/15(月) 22:38:29.98
>>67
把握できないぐらいクラス図
回路図みたいにしちゃって一体誰にとって何がいいの?
0070仕様書無しさん
垢版 |
2018/01/15(月) 22:41:55.97
ValueObjectめんどい
アンラップしないといろんな演算子とかメソッドが使えなくなるし
それなりに便利にしようとおもったら
使うかどうかもわかんないメソッドいっぱいつくらないといけない

個人用に作るには重すぎる
0071仕様書無しさん
垢版 |
2018/01/15(月) 22:48:50.32
>>68
ValueObjectを理解してないな
値だぞ値
お前は1とか"Hello, world!"って値をクラス図で配線するのか?しねーだろ
0072仕様書無しさん
垢版 |
2018/01/15(月) 22:50:37.06
ValueObjectで頭をかかえる私大文系w
意味のある固まりで構造化された美しさが分からない

日本人の曖昧文化では抽象性の高いプログラミングに適正がないんだろうな
ジャップランドではこんな馬鹿が上に立っているんだw
0073仕様書無しさん
垢版 |
2018/01/15(月) 22:54:52.91
>>71
は?
でもソース読むときクラスはクラスなんだからクラス図に書けや
んでこのクラスはゴミクラスだから重要なクラスはこれとこれとこれですって説明しろよカス

あんまり細かいクラスを作っちゃうから粒度がわからない
これやっても詳細設計書が整備されてれば問題は起きない
問題はなんの資料も書かないくせにこれやるとどこで何やってるのかさっぱりわからない
0074仕様書無しさん
垢版 |
2018/01/15(月) 22:57:35.74
日銭をかせぐのにあくせくしているので
高邁な美しさにまで心を配る余裕がないのです

ライブラリ設計者になれたらそういうの作りまくってやるのに
現実は雇われ土方
扱うのはBeanばっかりで
凝集度の高いオブジェクトの自作とは縁がありません
0075仕様書無しさん
垢版 |
2018/01/15(月) 22:57:40.23
>>73
もっかいいうぞ?
お前はintやstringをクラス図にいちいち全部書いて配線するのか?
するならもう匙を投げるしか無いので話は終わりだ
しないならValueObjectも同じことだと知れ
0076仕様書無しさん
垢版 |
2018/01/15(月) 23:01:00.62
>>73
この手のOOPをまったく理解してない残念な人ってやけに設計書を崇拝するよね
おそらくプログラムに構造らしい構造が全く無いから設計書で情報を水増し冗長化しないと理解できないんだろうな
ということを考えるとやっぱり設計書不要論は正解なんだろうな
OOPが設計の本質ってことを理解できない人がついてこれないだけでさ
0077仕様書無しさん
垢版 |
2018/01/15(月) 23:05:08.82
C#の構造体はクラス図に書かなくていいぞ
クラスじゃないからな
0078仕様書無しさん
垢版 |
2018/01/15(月) 23:17:26.94
>>75
世界中で使われて安定性が実証されてどこでも使える言語の基本クラスと
どこの馬の骨がつくったかわからん思い付きクラスを一緒にしていいわけあるか

バグったらまず疑わなきゃいけないし
改修するとき影響範囲を見なきゃいけないし
0082仕様書無しさん
垢版 |
2018/01/15(月) 23:33:56.89
>>78
だよね
俺も同意見

みんなが知ってる共通クラスと
個別に作ったのとじゃ
全然扱いが違うよ
0083仕様書無しさん
垢版 |
2018/01/15(月) 23:36:35.09
>>75
お前が作ったクラスは粒度も役目もなんもかんもわからないんだよ
絶対説明してもらわないとあかんよ
0085仕様書無しさん
垢版 |
2018/01/15(月) 23:42:23.93
役目は個々のクラス名から明らか
粒度はエンティティの構成要素
わかりやすすぎわろた
0087仕様書無しさん
垢版 |
2018/01/15(月) 23:45:13.30
>>30
そういう流用は参照による流用かメンテしない前提だろ
コピーしたらメンテってどうするの?
0089仕様書無しさん
垢版 |
2018/01/15(月) 23:50:52.58
>>84
ここでその構造を使う正当性が俺にはわからない
何を狙ってその仕組みを入れたの?
その仕組みを入れてあるところとないところの違いは何なの?
0090仕様書無しさん
垢版 |
2018/01/15(月) 23:52:43.99
例えば本来ならその仕組みを入れるべきところに入れてない箇所があったとしたら
俺にそれが判断できる明確な線引きはあるの?
0092仕様書無しさん
垢版 |
2018/01/16(火) 00:01:29.20
>>89
責務を明確にしてカプセル化で防御する
オブジェクト指向の基本だ

stringじゃ何でも表現出来すぎて責務が曖昧すぎる
stringには注文番号でも従業員名でもなんでも入ってしまう
これじゃそいつの正体がまったくわからないし何をやりたいのかも曖昧だ
そいつに適用可能なオペレーションも多すぎて利用者は簡単に間違える
注文番号オブジェクト.substring(1, 5)果たしてこれは注文番号にとって正しいオペレーションなのか? わからない…

一方で
class OrderNo {
private string asText;
... (略)
}
class EmployeeName {
private string asText;
... (略)
}

といったValueObjectを使えばそれが注文番号や従業員名であることが明確になる
適用可能なオペレーションはクラスのメソッドとして厳格に定義されるので利用者が間違えることもない
注文番号オブジェクト.substring(1, 5)が注文番号にとって正しくないオペレーションなら実行することはおろかビルドすらできない
もし仮に正しいオペレーションならIDEが補完をしてくれるドキュメントコメントで説明を表示してくれる
実にエレガントだ
美しい世界へようこそ
0093仕様書無しさん
垢版 |
2018/01/16(火) 00:05:44.74
OrderNoはフォーマットとか桁数とかあるからまだわからんでもない

EmployeeNameてw
0094仕様書無しさん
垢版 |
2018/01/16(火) 00:15:49.74
>>93
従業員名の最大長はint maxなのか?
従業員名に任意のシンボルを含んでも問題ない?
ファーストネームとラストネームの区別はない?
ロケールによって文字列表現を変更したりしない?

思考停止しないでもう少し考えようぜ
たかが従業員名でも君が考えている以上にドメイン知識は隠れてるものだよ
0096仕様書無しさん
垢版 |
2018/01/16(火) 00:22:13.40
誰を対象にしてソースに対策を入れてるのかわからない
なんも知らん奴がソースをいじることを想定してガードを入れてるバカに見える
0097仕様書無しさん
垢版 |
2018/01/16(火) 00:24:36.01
>>95
仕様書に書いてあるだけじゃ間違えるんだよ
どんなに仕様書を充実させたっていざコーディングするときにはただのstringだ
人間はstringにできることはなんだってやってしまう可能性がある
0098仕様書無しさん
垢版 |
2018/01/16(火) 00:27:57.85
>なんも知らん奴がソースをいじることを想定してガードを入れてるバカに見える

まったく違う
すべてを完全に理解して絶対に間違えない人間だけでチームが構成されているわけではないという前提でガードしてるんだよ

というか文字通り何も知らない新規要員が途中参加することもあるってことを想定できないって仕事で開発したことないのかな?
0101仕様書無しさん
垢版 |
2018/01/16(火) 00:36:51.73
>>100
あーいやもういいや
なんかイスカンダルあるといいな
って奴らみたいだし
0103仕様書無しさん
垢版 |
2018/01/16(火) 00:42:49.74
だってもうなんのためにプログラム組んでるかわからないじゃない
0104仕様書無しさん
垢版 |
2018/01/16(火) 01:20:02.49
抽象的思考能力に劣る日本人には仕方ないんだろw
自分が理解できないものを無意味と考える所に文系っぽい馬鹿さがあるんだよw

ValueObjectはジャップと違って白人様が考えたんだからな
抽象性で日本人は欧米中韓に極めて劣る
日本発の発明も文明も無いのがその証拠w
0106仕様書無しさん
垢版 |
2018/01/16(火) 05:44:38.28
>というか文字通り何も知らない新規要員が途中参加することもあるってことを想定

おまえら、お客さんのお金で遊んでるん?
0107仕様書無しさん
垢版 |
2018/01/16(火) 05:46:49.92
class EmployeeName{} てw
0108仕様書無しさん
垢版 |
2018/01/16(火) 05:51:32.80
>>106
> おまえら、お客さんのお金で遊んでるん?

あたりまえのことを聞くとは、おまえプログラマじゃないな?
もしかして馬鹿ユーザか?

客からもらった金は、もう俺らの金であって客の金じゃねーよ!
そして金もらって仕事するかどうかは契約による。
SES契約だったら、もう何もしないでずっと遊んでいるに決まってるじゃん?

請負い契約だったら必死でやるけど、
いまどき請負契約で受けるわけねーだろボケ!
0110仕様書無しさん
垢版 |
2018/01/16(火) 07:52:22.66
その値をDBに突っ込むときとかファイルに書き出すときに
どうしてんか気になる
0111仕様書無しさん
垢版 |
2018/01/16(火) 08:05:48.02
valueobjectパターンってクラス激増するからあんま好きじゃない
0112仕様書無しさん
垢版 |
2018/01/16(火) 08:52:36.89
insert into emp (empID, empName)
values (nextval('empID_seq'),$emp_Name);
0113仕様書無しさん
垢版 |
2018/01/16(火) 09:27:52.79
>>110
クラス内での話でメソッドの戻り値とかは仕様に従って言語の型に戻してるんじゃないか
そうでなければ修正を要求できるだろ
0114仕様書無しさん
垢版 |
2018/01/16(火) 11:15:56.26
>>108
>客からもらった金は、もう俺らの金であって客の金じゃねーよ!

なんだ? この泥棒。 はれのひの従業員かな?
0115仕様書無しさん
垢版 |
2018/01/16(火) 11:38:34.00
>というか文字通り何も知らない新規要員が途中参加することもあるってことを想定

これガイジに入れていいレベルで
何やってるのか意味不明だろ
0116仕様書無しさん
垢版 |
2018/01/16(火) 12:36:35.39
しっかし、ガードが使えないと途端にコードって糞になるな。

ロジック組み上がる度にちゃんとリファクタしていかないと、目も当てられない状況になるっていうか、
なってるクソコード大杉だろ。
0118仕様書無しさん
垢版 |
2018/01/16(火) 12:44:23.84
>>117

残業60も必要な現場はこっちから切ろうぜ。
0120仕様書無しさん
垢版 |
2018/01/16(火) 15:38:05.44
>>118
そのとおり!
0121仕様書無しさん
垢版 |
2018/01/16(火) 19:06:38.84
どこ行っても導入教育まともにやらないよな
設計書の場所だけ告知して放置だもん
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況