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/
0002仕様書無しさん
垢版 |
2018/01/15(月) 03:13:23.00
前スレに書いたら>>1000だったから立てたよ。
テンプレは内容読まずにコピペしたんだが
なんか変だね
0004仕様書無しさん
垢版 |
2018/01/15(月) 07:26:45.58
>>3
書き方が異質だからな

Cの眷属が主力の今においてVBしか出来ませんを公言してるようなもんだし
0005仕様書無しさん
垢版 |
2018/01/15(月) 08:15:15.80
クソ言語だけど、それ故にc#に無いhandles句とか言う謎文法が便利よ
0007仕様書無しさん
垢版 |
2018/01/15(月) 10:04:24.40
ちょい相談させて
少し前に入った外注さんの書くソースが独特で困惑してる
ソースが汚い訳でもバクがある訳でも無いし動作としては問題はない

ないんだけどロジックの組み立て方とかがうちのプロジェクトの常識?と違うから悪目立ちしてる

他のメンバーにも聞いてみたけどその人の書いてるコードは読みづらいって思ってるみたい

マネージャーに相談したんだけど
「ちゃんと動くならそれでいい」みたいなこと言うんだけど、こっちとしては流用元に使う事もあるから困ってる

ただ、改修してもらうにしても明確なルールがある訳じゃないから何をどうお願いしたらいいのか難しいところ

こういうのってどうしたら良いと思う?
こっちが慣れるしかないのかね
0008仕様書無しさん
垢版 |
2018/01/15(月) 10:32:41.07
>>7
マネージャがいいって言ってるんだから問題ないんだろ
慣れろ
0009仕様書無しさん
垢版 |
2018/01/15(月) 10:33:42.11
>>7
コードレビューして意識共有&リファクタだな
ちゃんと設計してたらそんな独特にならんけども
0010仕様書無しさん
垢版 |
2018/01/15(月) 10:38:09.82
>>9
マネージャーは自分でプログラムを書かない事もあってか、要件通りにプログラムが動けばいいって感じの人だからコードレビューとかにコストをかけないんだよね
0011仕様書無しさん
垢版 |
2018/01/15(月) 10:43:27.95
>>7
補足すると、一度しか使わない構造体とかクラスとかラッパーとかを大量に作る感じと言えばいいのかな

処理を分割する為にプライベートで作るのは分かるけどすごく小さい単位で作るからデバッグ時とかにすごく追いかけづらいんだよね
0012仕様書無しさん
垢版 |
2018/01/15(月) 11:19:40.94
>>11
設計書書かせないからだね
そういう奴に設計書書かせると
途端にクラスを作らなくなる
書くの面倒だからw
結局自分だって把握できない量の
おしっこを大量に散布して
自分しか触れないようにする手法
名付けて犬のしょんべん作戦
0013仕様書無しさん
垢版 |
2018/01/15(月) 11:37:20.57
>>7
そもそもお前が未熟だからいけない
いい設計とは何か?
答えられないだろ?
そいつの書くソースは明らかにそこから逸脱しているから読みにくい
でも言葉でお前はそれを表現できないから指摘できない

参考までに俺のいい設計の
定義を書くと

何の機能のどの処理が
ソースのどこに書いてるか
誰にでもわかること

これがわかんねーから
そいつのソースは読みにくい
0014仕様書無しさん
垢版 |
2018/01/15(月) 12:20:31.10
>>7
外注なんだろ

実装でツベコベ言うなら頼むなって感じ

どうせ外注先の未経験派遣が低単価で一生懸命作ってくれてんだからむしろ動くだけ偉いと褒めてやれ
0015仕様書無しさん
垢版 |
2018/01/15(月) 12:20:37.49
>>11

現物見ないと、勝手なこと言えないから、わからん。
0016仕様書無しさん
垢版 |
2018/01/15(月) 12:32:03.13
>>12
ションベン撒き散らした挙句に条件良いところがあるとさっさとトンズラ、PMはツベコベ言わず引き継げバグ修正しろの一点張りでデスマの後に故障退場までがテンプレート
0017仕様書無しさん
垢版 |
2018/01/15(月) 12:38:12.92
外注したとこのコードなんて見なくていいだろ
外部に繋がってるとこだけ見りゃいいじゃん
0019仕様書無しさん
垢版 |
2018/01/15(月) 13:52:58.85
>>11
実際に見てみないと、
外注が独りよがりか現場のクラス不慣れかわからん
YAGNIとかKISSとかよく言われるんで、
そこら辺で妥当かどうか相談してみたら?
ただ最初に上がってきた段階で相談してない時点で、
若干手遅れ感
0020仕様書無しさん
垢版 |
2018/01/15(月) 14:38:22.54
>>19
あーそんな感じかも
機能を小さく単純にする事は大切だけど、1機能単体では何を目的としてるのかが分からなくなるまで細分化しちゃってる感じかな?

普通は相談とかしながら仕事になれていくうちにさじ加減を覚えるものだと思うけと、そういうのが出来ない人だから相談とかもせずに好き勝手にやっちゃうんだろうな
0021仕様書無しさん
垢版 |
2018/01/15(月) 15:34:54.61
才能のあるプログラマーの書いたコードを読めない低脳文系が才能ある人を潰す好例だな
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
>なんも知らん奴がソースをいじることを想定してガードを入れてるバカに見える

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

というか文字通り何も知らない新規要員が途中参加することもあるってことを想定できないって仕事で開発したことないのかな?
■ このスレッドは過去ログ倉庫に格納されています

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