前スレ
オブジェクト指向システムの設計 172
http://mevius.2ch.net/test/read.cgi/tech/1467992113
オブジェクト指向システムの設計 173
http://mevius.2ch.net/test/read.cgi/tech/1502182334/
類似スレ
手続き型システムの設計 1
http://mevius.2ch.net/test/read.cgi/tech/1500282714
オブジェクト指向システムの設計 174 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/09/26(火) 07:20:38.98ID:qu+DPehL
429デフォルトの名無しさん
2017/10/08(日) 10:04:06.91ID:St7l03cQ でも見積り出せない作業じゃお金もらえないから
430デフォルトの名無しさん
2017/10/08(日) 10:17:02.42ID:jBiYbWN1 単価を品質に見合ったものにしろ
431デフォルトの名無しさん
2017/10/08(日) 10:58:52.79ID:tomnUErs おまえらアスペとかADHDとか言ってるけど
せめてググってwikipediaや解説サイトぐらい見れば話が合うような言葉を選んでくれ
10人にADHDの説明させたら10通りの回答が出てくる現状では
技術的な議論に使う言葉じゃないと思うんだわ
せめてググってwikipediaや解説サイトぐらい見れば話が合うような言葉を選んでくれ
10人にADHDの説明させたら10通りの回答が出てくる現状では
技術的な議論に使う言葉じゃないと思うんだわ
432デフォルトの名無しさん
2017/10/08(日) 11:01:13.46ID:4gVJmCxE 見積もりは出したふりでいい
客も見積もりに意味ないことは分かってるから上司への説明など適当にうまくやってくれる
その辺は阿吽の呼吸ですよ
客も見積もりに意味ないことは分かってるから上司への説明など適当にうまくやってくれる
その辺は阿吽の呼吸ですよ
433デフォルトの名無しさん
2017/10/08(日) 11:04:17.48ID:p3iPkAzZ 関わるのも面倒だからそういうのはメンバーにいない方がマシ
434デフォルトの名無しさん
2017/10/08(日) 11:16:34.14ID:ZEE0bNSu >>427
自分が誰よりも上位にあることを見せかける上で便利だからねアスペ認定は
自分が誰よりも上位にあることを見せかける上で便利だからねアスペ認定は
435デフォルトの名無しさん
2017/10/08(日) 11:18:28.86ID:A99pIV6O ここオブジェクト指向スレなんですが?
アスペがアスペを叩いていて笑う
アスペがアスペを叩いていて笑う
436デフォルトの名無しさん
2017/10/08(日) 11:25:19.20ID:4gVJmCxE アスペクト指向ってどうなったの
437デフォルトの名無しさん
2017/10/08(日) 11:36:48.97ID:FYLwhXQv438デフォルトの名無しさん
2017/10/08(日) 15:55:36.81ID:0lUaooNs >>436
DIで若干使われてなかったっけ?
DIで若干使われてなかったっけ?
439デフォルトの名無しさん
2017/10/08(日) 20:27:37.02ID:CWK8ZE8n そういや一時期流行ったな
実装のまずさを誤魔化す手段という認識しかなかった
実装のまずさを誤魔化す手段という認識しかなかった
440デフォルトの名無しさん
2017/10/08(日) 22:01:40.54ID:4gVJmCxE デコレーター
属性バリデーション
シリアライズ
apiプロキシ
…
aopは意識しないだけで結構使ってるな
属性バリデーション
シリアライズ
apiプロキシ
…
aopは意識しないだけで結構使ってるな
441デフォルトの名無しさん
2017/10/09(月) 08:04:01.64ID:tvCeOLo3 メッセージリソース管理クラスの素晴らしい設計を教えてください
void SomeAppMethod() {
// do something
view.AddMessage("MSG_0123")
// do something
}
こんな感じでリソースIDがシステム中にばら撒かれて制御不能状態になっています
メッセージリソースを管理するクラスを作って解消したいのですが良いAPIが決まりません
void SomeAppMethod() {
// do something
view.AddMessage("MSG_0123")
// do something
}
こんな感じでリソースIDがシステム中にばら撒かれて制御不能状態になっています
メッセージリソースを管理するクラスを作って解消したいのですが良いAPIが決まりません
442デフォルトの名無しさん
2017/10/09(月) 08:13:01.79ID:1ju7bjVC >>441
何が困ってるの?
何が困ってるの?
443デフォルトの名無しさん
2017/10/09(月) 08:52:42.35ID:PA3EvPtr >>441
OOPではリソースIDのような物理的な情報は隠蔽しなければならない
public interface ILowLevelMsgManager {
string GetMsg(string msgId, params object[] placeHolderArgs);
}
public interface IMsgManager {
string GetHogeMsg(); // ほげええええ
string GetFugaMsg(int num); // ふがふが{num}ふがふが
}
public class MsgManager : IMsgManager {
private ILowLevelMsgManager llmm;
public MsgManager(ILowLevelMsgManager pllmm) { llmm = pllmm; }
public string GetHogeMsg() { return llmm.GetMsg("MSG_0001"); }
public string GetFugaMsg(int num) { return llmm.GetMsg("MSG_0002", num); }
}
OOPではリソースIDのような物理的な情報は隠蔽しなければならない
public interface ILowLevelMsgManager {
string GetMsg(string msgId, params object[] placeHolderArgs);
}
public interface IMsgManager {
string GetHogeMsg(); // ほげええええ
string GetFugaMsg(int num); // ふがふが{num}ふがふが
}
public class MsgManager : IMsgManager {
private ILowLevelMsgManager llmm;
public MsgManager(ILowLevelMsgManager pllmm) { llmm = pllmm; }
public string GetHogeMsg() { return llmm.GetMsg("MSG_0001"); }
public string GetFugaMsg(int num) { return llmm.GetMsg("MSG_0002", num); }
}
444デフォルトの名無しさん
2017/10/09(月) 09:16:54.02ID:L5aecCRz >>443
それになんの意味があるのかさっぱりわからんな
メッセージなんてでかいプロジェクトだと500個とか行っちゃって
詳細なんかわかんなくていいんじゃないの?
もうメッセージ一覧で確認することは諦めろよ的な
それになんの意味があるのかさっぱりわからんな
メッセージなんてでかいプロジェクトだと500個とか行っちゃって
詳細なんかわかんなくていいんじゃないの?
もうメッセージ一覧で確認することは諦めろよ的な
445デフォルトの名無しさん
2017/10/09(月) 09:24:41.04ID:L5aecCRz メッセージでこれまで見た中で一番多いのは3000だった
そこまで構えろとはいわんけどそういう性質のものではある
ソースの該当箇所に一つ一つ置いていく手間は省略できない
メッセージリソースIDとメッセージが照合できればそれでその作業は終わりじゃねーのか?
後、何を管理してもらいたい?
そこまで構えろとはいわんけどそういう性質のものではある
ソースの該当箇所に一つ一つ置いていく手間は省略できない
メッセージリソースIDとメッセージが照合できればそれでその作業は終わりじゃねーのか?
後、何を管理してもらいたい?
446デフォルトの名無しさん
2017/10/09(月) 10:08:03.54ID:PA3EvPtr447デフォルトの名無しさん
2017/10/09(月) 10:21:29.30ID:Y2JfmrWo 客の都合でID体系変更になってリテラル全部調べて置き換えて再テストしたトラウマ
する価値ないと思ってもとりあえずでいいから抽象化しておいて損はない
する価値ないと思ってもとりあえずでいいから抽象化しておいて損はない
448デフォルトの名無しさん
2017/10/09(月) 10:22:07.29ID:FteGtpX4 別ファイルに切り出して読み込めばいいと思う
449デフォルトの名無しさん
2017/10/09(月) 10:44:55.28ID:3IBabimx >>446
いやぁ、だからさ
ソースのエラー箇所に自動配置なんかできないんだからそこは300だろうが3000だろうが30000だろうが手動じゃん
IDとエラーメッセージが組にさえなってたらどういう構造にしようがやることかわんねーよ的な
いやぁ、だからさ
ソースのエラー箇所に自動配置なんかできないんだからそこは300だろうが3000だろうが30000だろうが手動じゃん
IDとエラーメッセージが組にさえなってたらどういう構造にしようがやることかわんねーよ的な
450デフォルトの名無しさん
2017/10/09(月) 10:48:47.25ID:3IBabimx visualstudioのjaファイルとかその辺の仕組み使えばいいんじゃないの?
ローカライズするならやっとかないと死ぬよ
ローカライズするならやっとかないと死ぬよ
451デフォルトの名無しさん
2017/10/09(月) 10:50:11.84ID:Vj0lVF94 rm = new ResourceManager(locale)
un = rm.get("property.name.user-name")
msg = rm.get("validation.error.max-length", un, 10)
print msg # ユーザー名は10文字以下で入力してください
スッキリ
un = rm.get("property.name.user-name")
msg = rm.get("validation.error.max-length", un, 10)
print msg # ユーザー名は10文字以下で入力してください
スッキリ
452デフォルトの名無しさん
2017/10/09(月) 10:55:11.14ID:PA3EvPtr453デフォルトの名無しさん
2017/10/09(月) 11:29:45.24ID:3IBabimx >>452
いやぁでもこの数やる気にはなんないなぁ
いやぁでもこの数やる気にはなんないなぁ
454デフォルトの名無しさん
2017/10/09(月) 11:31:53.98ID:3IBabimx455デフォルトの名無しさん
2017/10/09(月) 11:34:13.65ID:3IBabimx このケースで余計に一層設けるのはメリット薄いんじゃない?
って言いたい
って言いたい
456デフォルトの名無しさん
2017/10/09(月) 11:44:58.84ID:M//uOX8+ >>441
C#なら素直に.resx使う
少なくとも存在しないIDを使った場合に
コンパイルエラーになる仕組みを使う
種類ごとにグループ化(階層化)して管理しやすくする
メジャーなフレームワーク参照したら分かると思うがMSG_0123みたいな命名自体も悪手
もうどうしようもないのかもしれんが
C#なら素直に.resx使う
少なくとも存在しないIDを使った場合に
コンパイルエラーになる仕組みを使う
種類ごとにグループ化(階層化)して管理しやすくする
メジャーなフレームワーク参照したら分かると思うがMSG_0123みたいな命名自体も悪手
もうどうしようもないのかもしれんが
457デフォルトの名無しさん
2017/10/09(月) 11:50:08.07ID:3IBabimx458デフォルトの名無しさん
2017/10/09(月) 11:59:06.73ID:RdvZrZJ8 コードジェネレータがいいよ
メッセージID, メッセージテキスト, パラメータ数
Hoge, ほげ, 0
Fuga, {0}はふがです, 1
これをエクセルで管理してメッセージ管理クラスを出力
class MessageManager {
public static string Hoge() => "ほげ";
public static string Fuga(object p0) => string.Format("{0}はふがです", p0);
}
んでデータ数が増えてきたらエクセルをやめてデータベースで管理
エクセルを使えばお客様もお喜びになられるので一石二鳥
メッセージID, メッセージテキスト, パラメータ数
Hoge, ほげ, 0
Fuga, {0}はふがです, 1
これをエクセルで管理してメッセージ管理クラスを出力
class MessageManager {
public static string Hoge() => "ほげ";
public static string Fuga(object p0) => string.Format("{0}はふがです", p0);
}
んでデータ数が増えてきたらエクセルをやめてデータベースで管理
エクセルを使えばお客様もお喜びになられるので一石二鳥
459デフォルトの名無しさん
2017/10/09(月) 12:17:44.19ID:M//uOX8+ >>457
メンテナンス性を犠牲にしても
命名負荷を下げたいという意思決定をしてるんならいいんじゃないの
神クラス・神テーブルと同じアプローチだけど
物によってはそれが適切な選択の場合もあるんだろうから
メンテナンス性を犠牲にしても
命名負荷を下げたいという意思決定をしてるんならいいんじゃないの
神クラス・神テーブルと同じアプローチだけど
物によってはそれが適切な選択の場合もあるんだろうから
460デフォルトの名無しさん
2017/10/09(月) 12:35:04.44ID:1orfMMQz >>441
> メッセージリソース管理クラスの素晴らしい設計を教えてください
メッセージリソースなんてものを作らない。
view.AddMessage("あーがこーでどうなりました")
って日本語で書けばいい。
多言語化したいなら、gettextなどの言語やフレームワーク標準の
多言語化ライブラリを使えばいい話。
その場合は、英語でメッセージを書いて、日本語化するってことが
よく行われるが逆でもいいだろう。
> メッセージリソース管理クラスの素晴らしい設計を教えてください
メッセージリソースなんてものを作らない。
view.AddMessage("あーがこーでどうなりました")
って日本語で書けばいい。
多言語化したいなら、gettextなどの言語やフレームワーク標準の
多言語化ライブラリを使えばいい話。
その場合は、英語でメッセージを書いて、日本語化するってことが
よく行われるが逆でもいいだろう。
461デフォルトの名無しさん
2017/10/10(火) 07:21:02.20ID:JGhyCx0Y462デフォルトの名無しさん
2017/10/10(火) 08:31:03.78ID:v9JcaVeZ ゲームをオブジェクト指向で作ると作りにくいよ
相互作用の処理が多過ぎてオブジェクトに閉じない
相互作用の処理が多過ぎてオブジェクトに閉じない
463デフォルトの名無しさん
2017/10/10(火) 12:08:00.54ID:RxOfGqdN それは設計どころかゲームそのものとしての落とし込みが不十分
ゲームとか一定のルールに則った動作をするだよ
ゲームとか一定のルールに則った動作をするだよ
464デフォルトの名無しさん
2017/10/10(火) 12:15:07.34ID:duckiwE1465デフォルトの名無しさん
2017/10/10(火) 23:46:15.72ID:WxQVAUFU 「オブジェクト指向だからステージの俳優が全員なんか言ってきて
カントクは一人一人対応なんかしてたら死ぬな!!www」
…いや、間違った理解をした奴はまあそういうドマヌケやらかしがちだが
普通はステージステータスに集約されて、ディレクターは
そのステータスを見て上から必要な個々に指示が送られるように作るからね…
カントクは一人一人対応なんかしてたら死ぬな!!www」
…いや、間違った理解をした奴はまあそういうドマヌケやらかしがちだが
普通はステージステータスに集約されて、ディレクターは
そのステータスを見て上から必要な個々に指示が送られるように作るからね…
466デフォルトの名無しさん
2017/10/11(水) 00:09:15.15ID:i63/Wje0 ゲームは油断するとすぐにキャストや型判定だらけになってしまう
特定のクラス同士の時だけ発生する相互作用とか
特定のクラス同士の時だけ発生する相互作用とか
467デフォルトの名無しさん
2017/10/12(木) 12:26:13.92ID:UV6Mfibu ゲームとか業務とかピンキリだろ
468デフォルトの名無しさん
2017/10/12(木) 21:48:31.48ID:Drh75QCI お客さんが属性バリデーションも他のバリデーションフレームワークも使っちゃダメって言うんだけど
どうすれば楽にバリデーションできる?
言語はC#
テキストリソースは全てDBで管理されている
ロケールによってエラーテキストを変えなければならいとする
どうすれば楽にバリデーションできる?
言語はC#
テキストリソースは全てDBで管理されている
ロケールによってエラーテキストを変えなければならいとする
469デフォルトの名無しさん
2017/10/12(木) 22:09:08.92ID:o8TlX9Z0470デフォルトの名無しさん
2017/10/12(木) 22:34:53.95ID:Drh75QCI >>469
属性やフレームワークは設定方法がよくわからないのでメンテナンスの時に困るから
ひたすら単調にif文をズラズラと書いてるんだけどシンドイ
項目数が100近いPageもあってそれぞれが何種類かのバリデーションを行うからバリデーションだけで数百行のメソッドになることもある
属性やフレームワークは設定方法がよくわからないのでメンテナンスの時に困るから
ひたすら単調にif文をズラズラと書いてるんだけどシンドイ
項目数が100近いPageもあってそれぞれが何種類かのバリデーションを行うからバリデーションだけで数百行のメソッドになることもある
471デフォルトの名無しさん
2017/10/12(木) 23:00:42.84ID:o8TlX9Z0 >>470
xmlでルール書くやつは敬遠されるのは理解できなくもないが
単純な属性ベースは分かりやすいしメンテしやすいのにね
楽しようとすれば結局自前で簡易的なフレームワーク風のものを作ることになる
あまりにも数が多いならコード生成という選択肢も
xmlでルール書くやつは敬遠されるのは理解できなくもないが
単純な属性ベースは分かりやすいしメンテしやすいのにね
楽しようとすれば結局自前で簡易的なフレームワーク風のものを作ることになる
あまりにも数が多いならコード生成という選択肢も
472デフォルトの名無しさん
2017/10/12(木) 23:06:26.57ID:njn1yLjW >>470
ライセンス的に問題がないものをコピーすればいい
ライセンス的に問題がないものをコピーすればいい
474デフォルトの名無しさん
2017/10/13(金) 01:47:19.56ID:l1jERKvk >>470
Frameworkを使わないc#ってどんだけマゾなの?ランタイム自分で書いてんの?
Frameworkを使わないc#ってどんだけマゾなの?ランタイム自分で書いてんの?
475デフォルトの名無しさん
2017/10/13(金) 01:48:05.83ID:nTgCE4U5 >>470
そんな理由にならない理由に従おうとする方がバカ
そんな理由にならない理由に従おうとする方がバカ
476デフォルトの名無しさん
2017/10/13(金) 02:48:12.40ID:s0+Jkp8l 今回みたいな例だとライブラリを使わないで自作するとしたら
使った場合に比べて何倍ぐらいの金額を請求する?
使った場合に比べて何倍ぐらいの金額を請求する?
477デフォルトの名無しさん
2017/10/13(金) 02:56:05.56ID:GlXmqXn2 バリデーションが全体の工数に占める割合がわからないとなんともいえないけど、数倍なんてなるわけないだろアホ
どんだけバリデーションばっかやってるプロダクトを想定してんだよ
客に費用の話をするとき、「通常この規模だと20人月ですが、バリデーションライブラリが使えないので+50人月かかります」とでも言うのか
どんだけバリデーションばっかやってるプロダクトを想定してんだよ
客に費用の話をするとき、「通常この規模だと20人月ですが、バリデーションライブラリが使えないので+50人月かかります」とでも言うのか
478デフォルトの名無しさん
2017/10/13(金) 03:43:57.20ID:s0+Jkp8l はぁ? 増えた分の請求は当然するだろ。当たり前のことを当たり前にするだけだぞ
479デフォルトの名無しさん
2017/10/13(金) 04:33:13.10ID:l1jERKvk >>476
なんでいきなりフレームワークじゃなくてライブラリの話になってんの?
なんでいきなりフレームワークじゃなくてライブラリの話になってんの?
480デフォルトの名無しさん
2017/10/13(金) 04:36:24.84ID:zVcBlnUR481デフォルトの名無しさん
2017/10/13(金) 04:37:49.67ID:zVcBlnUR ごめん勘違い
工数の膨らみ方が半端なさ過ぎて非現実的ってのが言いたかった
工数の膨らみ方が半端なさ過ぎて非現実的ってのが言いたかった
482デフォルトの名無しさん
2017/10/13(金) 04:40:34.82ID:qOElJcq/ ひとまず使って組んで元の処理コピーして置き換えちゃえばいいんちゃう?
バリデーションのソースってあんでしょ?
バリデーションのソースってあんでしょ?
483デフォルトの名無しさん
2017/10/13(金) 05:21:13.13ID:s0+Jkp8l >>479
バリデーションのフレームワークなんてないでしょw
バリデーションのフレームワークなんてないでしょw
484デフォルトの名無しさん
2017/10/13(金) 07:46:49.24ID:DI18WdpZ >>483
フレームワークの一部としてバリデーションがあるやろ
フレームワークの一部としてバリデーションがあるやろ
485デフォルトの名無しさん
2017/10/13(金) 14:51:54.32ID:+zTlsJiZ バリデーションのフレームワーク普通にあるだろw
486デフォルトの名無しさん
2017/10/13(金) 16:33:32.34ID:kRlRrFWL ごめん、何言ってんだかよくわかんないんだけど、
まず、>>468のバリデーションって、一体何に対するバリデーションの話してるの?
まず、>>468のバリデーションって、一体何に対するバリデーションの話してるの?
487デフォルトの名無しさん
2017/10/13(金) 23:02:45.05ID:6pOkahl4 if (!validateRequired("#foo")) {
var msgFormat = getResource("error.required");
var label = getLabel("#foo");
addMessage(msgFormat, label);
addCss("#foo", "input-error");
}
以下100項目繰り返し
これ以上簡潔で保守性の高いバリデーションが存在しない件
OOPは物事を無駄に複雑化するばかりで役に立たん
var msgFormat = getResource("error.required");
var label = getLabel("#foo");
addMessage(msgFormat, label);
addCss("#foo", "input-error");
}
以下100項目繰り返し
これ以上簡潔で保守性の高いバリデーションが存在しない件
OOPは物事を無駄に複雑化するばかりで役に立たん
488デフォルトの名無しさん
2017/10/13(金) 23:14:22.48ID:s0+Jkp8l489デフォルトの名無しさん
2017/10/13(金) 23:14:50.38ID:+zTlsJiZ2017/10/13(金) 23:16:05.73ID:+zTlsJiZ
だよなー
判定と表示は分けようって最初に教わる
判定と表示は分けようって最初に教わる
491デフォルトの名無しさん
2017/10/13(金) 23:18:48.84ID:s0+Jkp8l バリデーションはYAMLで定義するのが一番だって最近気づいた
492デフォルトの名無しさん
2017/10/13(金) 23:31:13.18ID:6pOkahl4 御託はいいからコード書いてみれば?
俺のコードより明確で保守性の高いコードをかけるとは思えんが
俺のコードより明確で保守性の高いコードをかけるとは思えんが
493デフォルトの名無しさん
2017/10/13(金) 23:36:42.10ID:pm2E02lv こーゆー上から目線なやつは自分の思い描くもの以外は全部クソって発想なのでめんどくさい
494デフォルトの名無しさん
2017/10/13(金) 23:38:06.15ID:6pOkahl4 そもそも俺のコードは判定と表示が綺麗に分かれてるし
495デフォルトの名無しさん
2017/10/14(土) 00:25:45.56ID:2Glba8SI 煽って教えてもらうスタイルに転向した?
496デフォルトの名無しさん
2017/10/14(土) 00:53:07.58ID:T9MbLxY+ きも
497デフォルトの名無しさん
2017/10/14(土) 07:25:19.71ID:SVCVJk+z バリデーション処理はexcel表から生成するものだよ
素人は手書きするらしいけどね
プロはこんなめんどくさいコードは書かない
素人は手書きするらしいけどね
プロはこんなめんどくさいコードは書かない
498デフォルトの名無しさん
2017/10/14(土) 09:45:45.21ID:xbyIhqN5 >>497
マジで!?どういう仕組み?
マジで!?どういう仕組み?
499デフォルトの名無しさん
2017/10/14(土) 10:58:40.12ID:SVCVJk+z >>498
簡単だよ
|画面ID|セレクタ|コマンド名|ルール|
の一覧表をVBAマクロのループで回してjavascriptのコードを生成してjsフォルダに置く
それだけだ
うちの会社では20画面程度のシステムを扱うことが多いけど、このマクロのおかげで全画面の検証処理の実装が1人日でできてしまう
一覧性も高くそのまま仕様書やテストケースにも使える優れものだ
簡単だよ
|画面ID|セレクタ|コマンド名|ルール|
の一覧表をVBAマクロのループで回してjavascriptのコードを生成してjsフォルダに置く
それだけだ
うちの会社では20画面程度のシステムを扱うことが多いけど、このマクロのおかげで全画面の検証処理の実装が1人日でできてしまう
一覧性も高くそのまま仕様書やテストケースにも使える優れものだ
500デフォルトの名無しさん
2017/10/14(土) 11:22:11.10ID:K4XROtS+ コピペプログラマは余計なコードを増やしてくれるな
foreach(validate as entry){
if (!validateRequired(entry.name)) {
var msgFormat = getResource(entry.resource);
var label = getLabel(entry.name);
addMessage(msgFormat, label);
addCss(entry.name, entry.clazz);
}
}
簡単に100分の1になるだろ
validateもプログラムからデータにしたら保守性あがるだろ
Modelからvalidateを収集するようにしてビジネスロジックを集約してもいいけど
今更そこまで設計変えるのは愚策か
foreach(validate as entry){
if (!validateRequired(entry.name)) {
var msgFormat = getResource(entry.resource);
var label = getLabel(entry.name);
addMessage(msgFormat, label);
addCss(entry.name, entry.clazz);
}
}
簡単に100分の1になるだろ
validateもプログラムからデータにしたら保守性あがるだろ
Modelからvalidateを収集するようにしてビジネスロジックを集約してもいいけど
今更そこまで設計変えるのは愚策か
501デフォルトの名無しさん
2017/10/14(土) 11:32:55.38ID:SVCVJk+z502デフォルトの名無しさん
2017/10/14(土) 11:44:12.14ID:XRdStdss お客様がソース読むのかよ w
条件をお客様が決めるならExcelでもらって>>500のentryを生成するツールを作ればいいだけ
条件をお客様が決めるならExcelでもらって>>500のentryを生成するツールを作ればいいだけ
503デフォルトの名無しさん
2017/10/14(土) 11:47:29.29ID:SVCVJk+z 結局コード生成するんじゃないかwww
なら最初からコード生成する前提で余計な手書きコードは書かない方がいい
プログラミングの基本すらわかってないのかよ
なら最初からコード生成する前提で余計な手書きコードは書かない方がいい
プログラミングの基本すらわかってないのかよ
504デフォルトの名無しさん
2017/10/14(土) 12:02:38.48ID:2Glba8SI でた、いつもの自称プロさんw
505デフォルトの名無しさん
2017/10/14(土) 12:08:57.88ID:SVCVJk+z 自称プロってwww
ここは学生専用だったか?
ここは学生専用だったか?
506デフォルトの名無しさん
2017/10/14(土) 12:51:39.31ID:6KISst0f507デフォルトの名無しさん
2017/10/14(土) 12:56:11.86ID:6KISst0f YAML形式の何が良いかというとシンプルで見やすいから
お客様が直接読み書きできるってことだな
下手なCSVファイルよりもメンテナンス性が良い
お客様が直接読み書きできるってことだな
下手なCSVファイルよりもメンテナンス性が良い
508デフォルトの名無しさん
2017/10/14(土) 13:15:41.53ID:NTbBehto まあそのデータなら差分出したきゃ
CSVで出して比較できそうだけどな
CSVで出して比較できそうだけどな
509デフォルトの名無しさん
2017/10/14(土) 13:55:47.42ID:2Glba8SI Excelでも管理できてるなら別にいいと思うぞ
客や開発メンバーのリテラシーレベルに合ってるなら
無理に違うフォーマットを強要する必要はない
openxmlとか使えば差分比較だけならできる
むしろルールと処理を密結合させても平気な神経のほうが理解できない
そのうえプロを自称してドヤるww
客や開発メンバーのリテラシーレベルに合ってるなら
無理に違うフォーマットを強要する必要はない
openxmlとか使えば差分比較だけならできる
むしろルールと処理を密結合させても平気な神経のほうが理解できない
そのうえプロを自称してドヤるww
510デフォルトの名無しさん
2017/10/14(土) 14:10:09.58ID:6KISst0f >>509
客にExcelを "ルール通りに" 使わせるという
リテラシーレベルをもとめるな
勝手にフォーマットを変える、勝手にセルを結合する。
どこからかコピペした結果おかしくなって直さない
追加分とかいって差分を送りました。そっちで結合してください
とか、毎回人手で対応しなきゃならない作業が発生するぞ。
こっちで決めた使い方のルールを守ってくれやしない
客にExcelを "ルール通りに" 使わせるという
リテラシーレベルをもとめるな
勝手にフォーマットを変える、勝手にセルを結合する。
どこからかコピペした結果おかしくなって直さない
追加分とかいって差分を送りました。そっちで結合してください
とか、毎回人手で対応しなきゃならない作業が発生するぞ。
こっちで決めた使い方のルールを守ってくれやしない
511デフォルトの名無しさん
2017/10/14(土) 14:11:17.22ID:6KISst0f > openxmlとか使えば差分比較だけならできる
むり、見た目同じように見えても、
レイアウト属性など関係ない情報の
大量の差分までできて管理できない
むり、見た目同じように見えても、
レイアウト属性など関係ない情報の
大量の差分までできて管理できない
512デフォルトの名無しさん
2017/10/14(土) 14:12:50.65ID:2Glba8SI513デフォルトの名無しさん
2017/10/14(土) 14:15:37.80ID:NZcmE+Ju ヴァリデーションフレームワークってどれも中途半端だよな
ちょっと複雑なヴァリデーションをしようとすると適用不能になる
しょうがないからカスタムコードを書くことになるんだけどフレームワークとケンカし始めるからフレームワークは規約で禁止って流れになる
日本の厳しい要件についてこれる柔軟性の高いフレームワークは無いものか
ちょっと複雑なヴァリデーションをしようとすると適用不能になる
しょうがないからカスタムコードを書くことになるんだけどフレームワークとケンカし始めるからフレームワークは規約で禁止って流れになる
日本の厳しい要件についてこれる柔軟性の高いフレームワークは無いものか
514デフォルトの名無しさん
2017/10/14(土) 14:16:08.20ID:2Glba8SI515デフォルトの名無しさん
2017/10/14(土) 14:16:14.83ID:XRdStdss516デフォルトの名無しさん
2017/10/14(土) 14:18:15.77ID:XRdStdss517デフォルトの名無しさん
2017/10/14(土) 14:22:34.78ID:6KISst0f >>512
例えばこの例だと行を一行追加して、A2にあったWorldが
A3に変わった時の差分はこんなふうに表示される
http://blog.modd.com/entry/2016/01/26/125206
diff -u a.txt b.txt
--- a.txt 2017-10-14 14:16:59.481494825 +0900
+++ b.txt 2017-10-14 14:17:20.601528128 +0900
@@ -5,6 +5,12 @@
</row>
<row r="2">
<c r="A2" t="str">
+ <v>OOXML</v>
+ </c>
+</row>
+<row r="3">
+ <c r="A3" t="str">
<v>World</v>
</c>
</row>
Worldがもともとrow r="2"、c r="A3" だったわけだが、たった一行挿入することで、
2行目以下の、"全ての行データに対して" このようにrowとcが変化するわけだよ。
それで差分を管理できるわけ無いだろ。
例えばこの例だと行を一行追加して、A2にあったWorldが
A3に変わった時の差分はこんなふうに表示される
http://blog.modd.com/entry/2016/01/26/125206
diff -u a.txt b.txt
--- a.txt 2017-10-14 14:16:59.481494825 +0900
+++ b.txt 2017-10-14 14:17:20.601528128 +0900
@@ -5,6 +5,12 @@
</row>
<row r="2">
<c r="A2" t="str">
+ <v>OOXML</v>
+ </c>
+</row>
+<row r="3">
+ <c r="A3" t="str">
<v>World</v>
</c>
</row>
Worldがもともとrow r="2"、c r="A3" だったわけだが、たった一行挿入することで、
2行目以下の、"全ての行データに対して" このようにrowとcが変化するわけだよ。
それで差分を管理できるわけ無いだろ。
518デフォルトの名無しさん
2017/10/14(土) 14:24:44.57ID:6KISst0f >>515
> YAMLで書ける客がどれだけいるんだよ w
こっちでこんな感じで書いてくださいっていうだけ。
それはExcelと同じ。
違うのは、Excelでは条件を指定した所で
見えない情報(フォーマット情報など)が
大量に埋め込まれるということ。
そしてその見えない情報を正しく修正するのが大変だということ
> YAMLで書ける客がどれだけいるんだよ w
こっちでこんな感じで書いてくださいっていうだけ。
それはExcelと同じ。
違うのは、Excelでは条件を指定した所で
見えない情報(フォーマット情報など)が
大量に埋め込まれるということ。
そしてその見えない情報を正しく修正するのが大変だということ
519デフォルトの名無しさん
2017/10/14(土) 14:26:09.55ID:6KISst0f >>516
> どんだけ低レベルの客と付き合ってるんだよ w
逆。客のレベルがExcelを無駄に使えるから
セルの結合とか色を変えたりしてくる。
Excelはできることが多すぎるんだよ。
余計なことをなんでもできてしまう。
> どんだけ低レベルの客と付き合ってるんだよ w
逆。客のレベルがExcelを無駄に使えるから
セルの結合とか色を変えたりしてくる。
Excelはできることが多すぎるんだよ。
余計なことをなんでもできてしまう。
520デフォルトの名無しさん
2017/10/14(土) 14:28:15.75ID:6KISst0f >>513
> ちょっと複雑なヴァリデーションをしようとすると適用不能になる
普通はちょっと複雑なバリデーションを書くための方法がフレームワークに用意されてる。
それに、ちょっと複雑なところだけ別にやればいいだけ。
100個のうち1個のマイナーケースに対応できないから、
100個すべてめんどくさい方法で作りましたとかアホでしか無い。
> ちょっと複雑なヴァリデーションをしようとすると適用不能になる
普通はちょっと複雑なバリデーションを書くための方法がフレームワークに用意されてる。
それに、ちょっと複雑なところだけ別にやればいいだけ。
100個のうち1個のマイナーケースに対応できないから、
100個すべてめんどくさい方法で作りましたとかアホでしか無い。
521デフォルトの名無しさん
2017/10/14(土) 14:30:01.79ID:NZcmE+Ju522デフォルトの名無しさん
2017/10/14(土) 14:34:03.24ID:6KISst0f >>521
じゃあバリデーションのすべてがカスタムコードである例を教えてください
じゃあバリデーションのすべてがカスタムコードである例を教えてください
523デフォルトの名無しさん
2017/10/14(土) 14:35:49.60ID:6KISst0f 例えば郵便番号のバリデーションが
カスタムコードとか言いそうで笑えるw
そして郵便番号を使うたびに
同じバリデーションをコピペしてるんだろうな。
普通は関数にしてフレームワークに登録すれば終わり
あとは同じバリデーションを使いまわしできる。
カスタムコードとか言いそうで笑えるw
そして郵便番号を使うたびに
同じバリデーションをコピペしてるんだろうな。
普通は関数にしてフレームワークに登録すれば終わり
あとは同じバリデーションを使いまわしできる。
524デフォルトの名無しさん
2017/10/14(土) 14:40:00.04ID:6KISst0f あぁ、当たり前だけど範囲チェックや型チェックや正規表現チェックとか
単純なものだけではなく、カスタムバリデーションや条件付きバリデーションなんかも
フレームワークの基本機能の1つだと先に言っておこう
単純なものだけではなく、カスタムバリデーションや条件付きバリデーションなんかも
フレームワークの基本機能の1つだと先に言っておこう
525デフォルトの名無しさん
2017/10/14(土) 14:45:10.18ID:XRdStdss >>518-519
> こっちでこんな感じで書いてくださいっていうだけ。
えっ?
YAMLの書き方から教えるのかよ...
Excelでフォーマット守れって言うこともできない客にYAML書けるとか無職の妄想乙 w
> こっちでこんな感じで書いてくださいっていうだけ。
えっ?
YAMLの書き方から教えるのかよ...
Excelでフォーマット守れって言うこともできない客にYAML書けるとか無職の妄想乙 w
526デフォルトの名無しさん
2017/10/14(土) 14:46:32.49ID:6KISst0f 日本の業務アプリを作っているところがアホなのは、
バリデーションが正しく機能しているかは
アプリを実行して画面からぽちぽち実際と同じ使い方をして
検証していることなんだよな。同じ内容のバリデーションであっても
項目ごとに検証する。それがテスト時間を無意味に増やしてしまっている。
本来はバリデーションのテストは種類ごとに1つ(すごく当たり前だがw)
そして、画面の項目ごとに、想定しているバリデーション名が
設定されているかを設定ファイルを見て確認するだけ。
実際に動かしてテストはしない。
バリデーションが正しく機能しているかは
アプリを実行して画面からぽちぽち実際と同じ使い方をして
検証していることなんだよな。同じ内容のバリデーションであっても
項目ごとに検証する。それがテスト時間を無意味に増やしてしまっている。
本来はバリデーションのテストは種類ごとに1つ(すごく当たり前だがw)
そして、画面の項目ごとに、想定しているバリデーション名が
設定されているかを設定ファイルを見て確認するだけ。
実際に動かしてテストはしない。
527デフォルトの名無しさん
2017/10/14(土) 14:47:12.46ID:2Glba8SI >>517
試したけど俺の環境では↓こうなるよ
diffだけなら十分実用レベル
$git diff
diff --git a/book.xlsx b/book.xlsx
index c75fc9a..6215aa2 100644
--- a/book.xlsx
+++ b/book.xlsx
@@ -1,5 +1,6 @@
Sheet1
Hello
+ OOXML
World
試したけど俺の環境では↓こうなるよ
diffだけなら十分実用レベル
$git diff
diff --git a/book.xlsx b/book.xlsx
index c75fc9a..6215aa2 100644
--- a/book.xlsx
+++ b/book.xlsx
@@ -1,5 +1,6 @@
Sheet1
Hello
+ OOXML
World
528デフォルトの名無しさん
2017/10/14(土) 14:50:00.76ID:6KISst0f >>525
> YAMLの書き方から教えるのかよ...
YAMLの書き方はExcelよりも簡単だよ。
Excelは知らない人が使いこなすためには
数週間とか数カ月かかるが、
YAMLだとフォーマット用意して、
これと同じように書いてくださいで説明終わり。
Excelでフォーマットを守れないのは、
これと同じように書いてくださいと言っても、使い方が難しいから。
俺の母親は、文字の自動補間機能のせいで「1」と入力しようと
しても「10」と補完されてしまって困っていたな。
> YAMLの書き方から教えるのかよ...
YAMLの書き方はExcelよりも簡単だよ。
Excelは知らない人が使いこなすためには
数週間とか数カ月かかるが、
YAMLだとフォーマット用意して、
これと同じように書いてくださいで説明終わり。
Excelでフォーマットを守れないのは、
これと同じように書いてくださいと言っても、使い方が難しいから。
俺の母親は、文字の自動補間機能のせいで「1」と入力しようと
しても「10」と補完されてしまって困っていたな。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 ★2 [お断り★]
- 中国外務省局長 「ポケットに手を入れていたのは寒いから」 日本との局長級会談で [お断り★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★6 [ぐれ★]
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 ★3 [お断り★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★4 [BFU★]
- 【速報】日本産牛肉の対中国輸出再開協議が中止 ★2 [おっさん友の会★]
- 【実況】博衣こよりのえちえちフログロ学力テスト🧪
- 【高市早苗】習近平、本気で激おこ [115996789]
- 【悲報】高市早苗さん、もう辞職しか選択肢がない… [271912485]
- 【岸田速報】山上妹、覚醒。「自慢の兄」「安倍晋三と統一教会は強固な関係性」「法の下では解決不能」 [559744496]
- 【ござる専🏡】風間🥷配信実況スレ🏯【風間いろは】
- 【高市悲報】「岡田のせいです」と父さんに説明して通用するはずないんだけど大丈夫なの?ガチでその方向で固めてない?怒られない? [213647114]
