Qiita 4 - キータぞ、 ..
[2ch|▼Menu]
222:デフォルトの名無しさん
24/02/26 17:29:41.41 K4z1iUSz.net
>>220
依存関係のある複数のルールのうち依存先ルールを変更するなら
依存元ルールへ波及する影響も精査した上で仕様を変更するのが当たり前じゃない?
それがなされないような不適切な仕様変更に対してコードの構造だけで対処しようとしても意味がないと思うけど

223:デフォルトの名無しさん
24/02/26 17:33:14.29 f3ymwFB5.net
頭の悪いashworthとそれより頭の悪いアノンが言い争うスレ

224:デフォルトの名無しさん
24/02/26 18:21:17.14 3GAS9rL8.net
>>222
> 依存関係のある複数のルールのうち依存先ルールを変更するなら
> 依存元ルールへ波及する影響も精査した上で仕様を変更するのが当たり前じゃない?

仕様変更の理由なんて様々だし数字間違えてたから修正なんてこともあり得るわけでお前の都合の良い話されたところで意味ない。

225:デフォルトの名無しさん
24/02/26 18:54:20.03 q1duqwhP.net
URLリンク(qiita.com)
> この記事を書いてらっしゃる @kjm_nuco さんが
>
> まとめると、ある西暦に対して、
>
> 400の倍数ならば、うるう年
> 400の倍数でない、100の倍数ならば、平年
> 100の倍数でない、4の倍数ならば、うるう年
> 4の倍数でないならば、平年
> ということになります。
>
> と、その導出の過程まで詳細に説明して結論付けているのに、それを完全無視して持論を唱えます?
> 4や100や400の値が仕様変更で別の数字になったら、そりゃ、導出も変わって結果も変わるでしょうよ。
> あなた、仕様変更があったらパラメタ書き換えるだけで検証しないんですか?

仕様変更前提のコードならロジックは変わらずにパラメタだけ変更されたなら該当するパラメタの修正だけで変更が済むのが理想だわなあ、もちろんコード変更したら動作確認もするけども。
100が4の倍数に含まれ400は100の倍数に含まれるというパラメタの値に依存したロジックなんて論外だろ。これでカルノー図書いて条件式を簡潔にするのにケチつけてたんだからわけわからん。キチガイと言う他ないわ。

226:デフォルトの名無しさん
24/02/26 18:56:53.65 f3ymwFB5.net
そいつがキチガイなのは見ての通りだが「ただし」がわからんのも相当だぞ

227:デフォルトの名無しさん
24/02/26 19:10:07.73 SrLJ7ICG.net
>>226
自分がキチガイであることは認めた上で
相手が「ただし」がわからんということにしたい作戦かあ。上手くいくと良いね。

228:デフォルトの名無しさん
24/02/26 19:12:25.31 mjzxAH6O.net
> つまり「ただし」の意味がわからずおかしなコードを書いたお前が悪いってことじゃね?w
> Dより先にEを判定しなきゃだぞ?

「ただし」がわからん人の例↑

229:デフォルトの名無しさん
24/02/26 20:36:29.06 wuM0ykw9.net
これどっちもashworthじゃね?
孤独すぎてここでしか構ってもらえないんだろ

230:デフォルトの名無しさん
24/02/26 23:11:20.94 SMj/dcU6.net
例外を先にはじけ定石

231:デフォルトの名無しさん
24/02/26 23:34:55.82 B8OdOrdj.net
>>224
数字を間違えてたならその間違いの影響範囲を精査して仕様変更するのが当たり前
それをやらない前提の話をしてるなら上で書かれてたようにリテラシーの問題

>>225
リンク先は読んでないけど100とか400はパラメタじゃない
それに本来のうるう年の判定ルールにある「400の倍数の年はうるう年」というのは
400が100の倍数ということには全く依存していない
例えば400が401になれば100の倍数ではなく401の倍数の年もうるう年だし両方の倍数の年もうるう年になる

232:デフォルトの名無しさん
24/02/27 10:37:45.92 w0Y37g8I.net
>>231
本来のうるう年は400年間に97回のうるう年を設けるために設定されたルールだから400が100の倍数(100は400の約数)にめちゃくちゃ依存してるぞバカか

233:デフォルトの名無しさん
24/02/27 10:56:12.21 rFgCegUY.net
>>232
全く反論になってなくて草
さすが低リテラシーw

234:デフォルトの名無しさん
24/02/27 11:19:02.15 eGpU60+1.net
自分に理解できない話=反論になってない

だからashworthは楽で良いよなw

235:デフォルトの名無しさん
24/02/27 11:59:55.37 +hF5aX7t.net
「ただし」「かつ」「または」の区別がついてないやつしかいなくて草

236:デフォルトの名無しさん
24/02/27 13:59:55.76 giHJXKz2.net
ただし=if(条件分岐)
かつ=&&(条件演算子)
または=or(条件演算子)

237:デフォルトの名無しさん
24/02/27 15:35:42.51 nHaZjTEs.net
>>236
それはギャグのつもりか本気で言ってるのかどっち?

238:デフォルトの名無しさん
24/02/27 16:08:42.50 inHdMvEK.net
間違いの指摘なら具体的にすれば良いだけのことなので
本気で区別がつかないのだろう。馬鹿ってかわいそう。

239:デフォルトの名無しさん
24/02/27 16:35:26.48 fpWUnxpT.net
>237 意味としては合ってるやろ

240:デフォルトの名無しさん
24/02/27 18:14:30.98 WP/FHrEp.net
>>236
ただし= unless

241:デフォルトの名無しさん
24/02/27 18:24:33.47 bwwr5oTI.net
>>231
> 数字を間違えてたならその間違いの影響範囲を精査して仕様変更するのが当たり前
思いっクソ馬鹿馬鹿しいこと言っててクソワロタww
今年一番ワロタw

242:デフォルトの名無しさん
24/02/27 18:29:59.55 y8pZ0Jar.net
>>236
&&やorは一般的には論理演算子と呼ぶ
条件演算子は三項演算子とかのこと

243:デフォルトの名無しさん
24/02/27 18:39:37.89 4Nh/0wVd.net
「かつ」「または」と同じように
「ただし」が箇条書きなどで複数ある場合
それがどの範囲にかかるかは文脈依存になる

244:デフォルトの名無しさん
24/02/27 20:10:55.74 nHaZjTEs.net
>>238
ギャグじゃなく本気で言ってたみたいだな
馬鹿ってかわいそう

245:デフォルトの名無しさん
24/02/27 21:18:51.78 K6/gYDs0.net
>>233
反論になってないというあんたの主張が理解できない

246:デフォルトの名無しさん
24/02/28 08:32:21.60 y4kbkltn.net
「ただし」は真となる値の範囲を狭めるもので条件演算子のandだよ
ベン図を描けばわかる(ただし頭の悪いお前にはわからない)
「かつ」と違うのは用法だね

if(ベン図を描くand理解しようとしている人!=頭の悪いお前){
理解できる
}

つまり「ただし」の前の条件が真であっても後の条件を評価するまでは評価が終わらない
「ただし」の前の条件が偽であった場合には後の条件は見なくて良い

Dまで判定して真であればEを評価しないうちに早期リターンするコードを書くやつがアホなだけ

> A: 4の倍数の年は、うるう年
> D: ただし30の倍数の年は、うるう年
> E: ただし、30と4の倍数の年はうるう年ではない

これは次のようになる
y%4==0 && y%30==0 && !(y==30&&y==4)

yが4の場合と30の場合は閏年だが60の場合は違う
60が閏年から外れるのはEが生きてるからだ
ほらEがあるとないとで結果が違うだろ?
同じ結果になるコードを書くお前がアホなんだよ
(ただしお前にはこんなに丁寧に説明しても理解できない)

247:デフォルトの名無しさん
24/02/28 08:36:07.49 LGkVWGjh.net
>>246
「ただし」自体の説明はそれで合ってるがDのイミフな日本語を機械的にコード化したせいでコードは間違ってるぞ

248:デフォルトの名無しさん
24/02/28 09:56:18.74 MlGp2l7l.net
>>246
> A: 4の倍数の年は、うるう年
> D: ただし30の倍数の年は、うるう年
> E: ただし、30と4の倍数の年はうるう年ではない
AとDでうるう年である条件を定義してEで例外を定義するならDの「ただし」は余計。
> これは次のようになる
> y%4==0 && y%30==0 && !(y==30&&y==4)
↑は完全に間違い。馬鹿丸出し。

249:デフォルトの名無しさん
24/02/28 10:14:51.35 FdH5cnJ+.net
>>246
> A: 4の倍数の年は、うるう年
> D: ただし30の倍数の年は、うるう年
> E: ただし、30と4の倍数の年はうるう年ではない
Dの条件を「(4の倍数で)30の倍数の年はうるう年」のつもりで言ってるなら頭悪いな。
「(4の倍数で)30の倍数の年はうるう年」は
> A: 4の倍数の年は、うるう年
に反しない条件なのでDは意味ない。
仕様については問い合わせされるレベルで頭悪い。

250:デフォルトの名無しさん
24/02/28 10:47:17.39 f0s7DZ+T.net
やはり日本語リテラシーの異常な低さがクソコードを量産する根本原因だったか

251:デフォルトの名無しさん
24/02/28 11:22:49.01 yOiLGWUp.net
> y%4==0 && y%30==0 && !(y==30&&y==4)
なんじゃこりゃww

252:デフォルトの名無しさん
24/02/28 11:26:06.11 yOiLGWUp.net
> 仕様については問い合わせされるレベルで頭悪い。
仕様を書く立場にも仕様に遠慮なく問い合わせできる立場にもないんだな
頑張れよ

253:デフォルトの名無しさん
24/02/28 11:27:26.02 /piA0aUk.net
「かつ」「または」の2つは && or で限定できるけど
「ただし」に関しては文脈に依存するやろ
URLリンク(dictionary.goo.ne.jp)但し/

254:デフォルトの名無しさん
24/02/28 11:28:37.52 /piA0aUk.net
>253
ごめんURLズレた
「ただしとは」で検索して文例見てくれれば分かると思う

255:デフォルトの名無しさん
24/02/28 11:51:28.08 OtjJg4S7.net
>>252
「イミフなんだがアタマ大丈夫?」
みたいな問い合わせを日常的に貰ってるということかあ。
問い合わせされる方もする方も大変そうですねw

256:デフォルトの名無しさん
24/02/28 11:54:35.90 Sa1fCZXj.net
ashworthが一晩掛けた渾身の投稿>>246がフルボッコで草w

257:デフォルトの名無しさん
24/02/28 13:46:04.16 7qoDRe0G.net
> A: 4の倍数の年は、うるう年
> D: ただし30の倍数の年は、うるう年
> E: ただし、30と4の倍数の年はうるう年ではない
↑を
URLリンク(qiita.com)
> それ、問題文の条件のまま書いちゃダメなんですよね。
> 「ただし」がある場合は前出の条件を否定してくるので、条件の順番通りに書くと破綻します。
> だから、「ただし」がある場合は条件を逆に記述していくのが鉄則です。
ashworthの言う鉄則(笑)に当てはめると
def is_leap(year):
 if year % 4 == 0 and year % 30 == 0:
  return False
 if year % 30 == 0:
  return True
 if year % 4 == 0:
  return True
 return False
こうなるのかな。
yearの値が30の場合、4の倍数じゃないけどTrue返すことになるけど正しいのかな??

258:デフォルトの名無しさん
24/02/28 14:16:41.38 EtLD5Apj.net
>>253
「かつ」や「または」もプログラムで言うoperator precedenceが明確に決まってるわけじゃないから文意が形式的に一意に決まるわけじゃないよ
箇条書きで列挙したような場合は特に

259:デフォルトの名無しさん
24/02/28 15:37:54.21 6YiW03rz.net
>>252
原作者とコミュニケーションがとれない脚本家を彷彿とさせるな

260:デフォルトの名無しさん
24/02/28 15:59:07.63 lY+FE6N6.net
>>259
どちらかと言うと原作者を神扱いしすぎていつも万策尽きるアニメ制作会社の下っ端社員のほうが近い

261:デフォルトの名無しさん
24/02/28 16:12:01.96 Tb528kvr.net
> > y%4==0 && y%30==0 && !(y==30&&y==4)
> なんじゃこりゃww
禿ワラw
> && !(y==30&&y==4)
特に↑のとこ正気ではないなww

262:デフォルトの名無しさん
24/02/28 16:28:39.17 mI6hy9de.net
>258
確かにそうだね。クライアントから要件をヒアリングして仕様定義する時にこういった日本語の難しさはヒシヒシと感じるなぁ
結局プログラムコードに落とし込む時に一意で無ければいけないから曖昧な日本語や包括的な意味で指定されてる言葉は具体化させる必要があるけど、クライアントに対して具体的な話をすればするほど(長くなりそうだなぁ…)と思われて嫌がられるというジレンマw
ちょっと話変わって興味湧いてきた議題があるんだけど日本語以外の言語はどうなんだろう?
例えば他の国の言葉って、伝達手段という意味で要件定義やプログラムに落とし込みやすいorしにくい、とかあるのかな
文化や国民性とも大いに関わりありそうだなぁ、とも思った

263:デフォルトの名無しさん
24/02/28 18:10:53.46 m90mYtIt.net
ashworthはほんと日本語不得意だなw

264:デフォルトの名無しさん
24/02/28 21:49:14.47 XH++Q0uC.net
>>257
仕様記述をどう解釈するかという問題と解釈後の仕様をどうコードで表現するかという2つの問題を分けて考えないと
仕様記述に曖昧さあるからといってクソコードを正当化できるわけじゃないよ

265:デフォルトの名無しさん
24/02/28 22:20:11.05 q7g3yYxU.net
>>264
なんか勘違いしてるみたいだけど
・ashworthの書いた仕様がクソ
・ashworthの説明するコーディング方法がクソ
という単純な話なんだけど。
こんな馬鹿な仕様でこんな馬鹿なコーディングする訳ないじゃんashworthじゃあるまいし。

266:デフォルトの名無しさん
24/02/28 22:24:30.36 BRTW/12W.net
ashworthって自分に言われたこと他人に転嫁しようとよくするけど朝鮮人みたいな性格しとるよなあ。

267:デフォルトの名無しさん
24/02/28 22:59:12.11 jGUEhuN8.net
発達障害なんだよ多分
ウチの職場にも似たような奴がいた

268:デフォルトの名無しさん
24/02/29 00:33:10.53 mUMEkWUK.net
可読性ウンコな書換してる@fujitanozomu
記事の本質から外れすぎ@ashworth
子供じゃねえんだからさあ…

269:デフォルトの名無しさん
24/02/29 08:43:01.87 Rokc00Z5.net
本質から外れてるんじゃなくて単に間違ってるのがashworthなんだが
自己認識おかしいぞ?

270:デフォルトの名無しさん
24/02/29 08:53:25.88 KHMFPlQr.net
ashworthは他人を馬鹿にするの控えると良いよ。お前より馬鹿なんてそうはいないんだから。

271:デフォルトの名無しさん
24/02/29 10:25:49.86 djbck9L0.net
>>265
君が書いてる>>147は誰がどう見てもクソコードじゃん
もしかして自覚ないの?

272:デフォルトの名無しさん
24/02/29 11:40:45.51 q8VatjCc.net
> 誰がどう見てもクソコード
・具体的な指摘がない
・良例の提示がない
ashworthっていっつもこんなだねw
本人的にはこれでなんか言ってるつもりなんだろうか?

273:デフォルトの名無しさん
24/02/29 11:44:12.15 9WgSc6Jr.net
これは次のようになる(キリッ
y%4==0 && y%30==0 && !(y==30&&y==4)
「誰がどう見てもクソコード」ってこういうのでしょw

274:デフォルトの名無しさん
24/02/29 13:00:43.45 XQlhxPO9.net
「ただし」がわからなくて恥をかいたのを一生懸命ごまかしてる感じはもういいよ

275:デフォルトの名無しさん
24/02/29 13:28:37.00 Sd8AzslA.net
> >274
ashworthに恥の概念なんてあるわけないでしょ

276:デフォルトの名無しさん
24/02/29 16:22:49.93 U6+pmEGF.net
://b.hatena.ne.jp/entry/s/qiita.com/7mpy/items/960bd24f3f77a4d7cef4
APIが知られた時点で非公開APIでない
ダイソーの意図が公開されたか分からないがコメントを公開したら非公開APIでない
APIはセキュリティのかけらもなく誰でも使えるようになってる
記事が消えてるがAPI使っても問題ないんじゃね?
セキュリティがあるかが使ったらいけないかの基準
記事が問題あるかのようなコメントがついてるが問題ないんじゃね?

277:デフォルトの名無しさん
24/02/29 23:14:56.26 9xtDm8CY.net
どう見ても釣りだろうが、リバースエンジニアリングしないとわからないAPIを公開APIとするのは無理がある

278:デフォルトの名無しさん
24/03/01 00:46:54.88 m8SX0+fF.net
>>273
どちらもクソだけどそっちのは大半の人が一目で間違ってると分かるから軽度のクソ
>>147>>218辺りで指摘されてる単純な間違いが構造がグチャグチャなせいではるかに見つけにくくなってるのでより重度のクソ
免許センターは後者かなぁw
まああれはプログラミングの問題ではないと思うが

279:デフォルトの名無しさん
24/03/01 11:47:17.07 4HHiluMX.net
>>278
x年前の同日とかy年後の同日を求める計算を手動でやってバグってたんだろ
仮に標準ライブラリの機能を使ってたとしてもテストするのが常識なんだが
うるう年の簡単な例でバグったクソコード書いてドヤるようなやつらと同じで低能力者に一般常識は通用しない

280:デフォルトの名無しさん
24/03/01 15:15:33.63 g8UXT5i1.net
>>278
ashworth馬鹿なんだから投稿すんのやめりゃいいのに。
これ以上恥をかきたい意味がわからん。

281:デフォルトの名無しさん
24/03/01 15:31:32.19 upQJ9nhR.net
>>218
> そりゃEの判定が不要になるコードを書いてるからだよね

Eの判定が不要なアホな仕様のせいだぞ

> A: 4の倍数の年は、うるう年

> D: ただし30の倍数の年は、うるう年
> E: ただし、30と4の倍数の年はうるう年ではない

282:デフォルトの名無しさん
24/03/01 17:51:14.14 b+hVzDXB.net
>>281
>Eの判定が不要なアホな仕様のせいだぞ
Eの判定が不要だと判断したのはEよりDのルールが優先されるべき考えだからだよね?
であればどういう理由もしくはどういう解釈によってEよりDが優先されると考えたのかを説明してよ

283:デフォルトの名無しさん
24/03/01 20:46:32.11 G1CP139A.net
> Eの判定が不要だと判断したのはEよりDのルールが優先されるべき考えだからだよね?
違うぞ。
DよりEのほうが条件として先に書かれているので判定が先に行われるってだけ。
Dの後の
> E: ただし、30と4の倍数の年はうるう年ではない
の条件判定はAとDで既に行われている内容なので削除可能。
結果、
> D: ただし30の倍数の年は、うるう年
> E: ただし、30と4の倍数の年はうるう年ではない
↑の条件判定と結果は
ただし30の倍数の年は、うるう年ではない
にまとめられる。

284:デフォルトの名無しさん
24/03/01 21:21:21.20 6oWPDYWL.net
>> A: 4の倍数の年は、うるう年
>> D: ただし30の倍数の年は、うるう年
こんな書き方は普通しない
AもDも同じ「うるう年(である)」とあるのに、逆接の接続詞である「ただし」で結んでるのは日本語としておかしい
> D’: 30の倍数の年も、うるう年
とするか、AとDの間に
> X: 4の倍数でない年は、うるう年ではない
を入れるべきだろう

285:デフォルトの名無しさん
24/03/01 22:07:34.93 RZn8d5pS.net
>>283
「ただし」という日本語知らない人かな?

286:デフォルトの名無しさん
24/03/01 22:20:09.43 kL3oeUQC.net
>の条件判定はAとDで既に行われている内容なので削除可能。

たしかに「30と4の倍数」という日本語の書き方がandなのかorなのか判別しにくいが
わざわざ意味のない方の解釈をして「それは意味がない」という指摘するのはアホっぽい

287:デフォルトの名無しさん
24/03/01 22:37:47.13 Y2FpEKvZ.net
 神奈川、新潟、岡山、愛媛の4県で先月29日、運転免許証を発行する機械にシステム障害が起き、一時、免許証を発行できない事態となりました。

 警察庁によりますと、免許証を作る機械に「うるう年」の設定がされていなかったことが原因だということです。

 「うるう年」が原因のトラブルは、他でも発生していました。

 大手ドラッグストアのスギ薬局でも管理システムに障害が起き、全国の店舗で一時、処方薬の会計ができなくなりました。

 スギ薬局によりますと、3年前に現在の会計システムを導入。初めて2月29日を迎え、過去の記録がなく障害を起こしてしまったということです。

 薬の処方に問題はなく、会計ができなかった客には後日、代金を支払ってもらうとしています。

(「グッド!モーニング」2024年3月1日放送分より)

288:デフォルトの名無しさん
24/03/01 23:34:09.01 Q+OPlW8S.net
>>283
すまんけど言ってることがよく理解できなかったわ
生産的じゃなさそうなのでこの話はもうやめとく

289:デフォルトの名無しさん
24/03/02 11:50:59.70 BHfB/iOz.net
ashworth、自分から言い出した仕様に完敗w

290:デフォルトの名無しさん
24/03/02 13:58:32.22 tdDj2Vwb.net
都合が悪いレスは全てashworth認定しないと自我が保てなくなってるんだな
ここまでいくと病気だから早めに病院行けよな

291:デフォルトの名無しさん
24/03/02 15:28:11.69 nmjvrmx1.net
馬鹿言ってる投稿を「都合が悪いレス」と曲解する辺りashworth丸出しで草w

292:デフォルトの名無しさん
24/03/02 15:47:12.16 cvT/gLx6.net
> E: ただし、30と4の倍数の年はうるう年ではない

これって

E: ただし、30の倍数または4の倍数である年はうるう年ではない
E: ただし、30の倍数であり4の倍数である年はうるう年ではない
E: ただし、30年または4の倍数の年はうるう年ではない

いろんな解釈可能だけど、こんな仕様書く奴は素人よな。

293:デフォルトの名無しさん
24/03/02 17:25:47.49 BHfB/iOz.net
>>286
URLリンク(godbolt.org)
URLリンク(godbolt.org)

andでもorでもEの条件判定は削除されるんだがアホはお前だろw

294:デフォルトの名無しさん
24/03/02 17:38:03.69 /d2p+fy2.net
>>284
>逆接の接続詞である「ただし」で結んでるのは日本語としておかしい
「ただし」は逆接の接続詞ではないぞ
誤った思い込みが根本原因だったか

295:デフォルトの名無しさん
24/03/02 19:13:35.61 lWfSp3Yb.net
ashworth曰く

URLリンク(qiita.com)
> 「ただし」がある場合は前出の条件を否定してくる

だそうだから辞書になんて書かれていようが奴の言ってる「ただし」については
逆接の接続詞という理解で合ってる。

296:デフォルトの名無しさん
24/03/02 19:49:38.94 3j0sAxwL.net
>>294
ほい
URLリンク(thesaurus.weblio.jp)

> 条件付け・逆接の補足
> 但し しかし とはいえ とは言っても それでもなお だけど けれども ですが かと言って さりとて そうはいっても

297:デフォルトの名無しさん
24/03/02 19:51:21.69 JOsAKrM4.net
>>294もそうなんだけど「ただし」を誤解してるのが誤りの原因であるという主張、全部ashworthよねw

298:デフォルトの名無しさん
24/03/02 22:38:28.08 73jLSJQo.net
>>293
笑ってしまうほど糞コード。
最初に4の倍数じゃないとスキップされてしまう時点でおかしいと思わんのか。

299:デフォルトの名無しさん
24/03/02 23:12:36.56 ucoX/K/i.net
「最初に4の倍数じゃないとスキップされてしまう」のがおかしい理由を説明しない辺りでashworthって丸わかりなんだよなあw
そんなに悔しかったかww

300:デフォルトの名無しさん
24/03/02 23:20:14.73 Xz9OeIFX.net
うるう日にしか発生しないバグ
zenn.dev/razokulover/articles/7001ed233137e5
ちなみにChatGPTに先の要件を伝えて生成してもらったコードもうるう年が考慮されておらず手直しが必要だった。
AIで生成されたコードが要件に合うかどうかを読み解ける程度の力はまだ我々には必要そう。

301:デフォルトの名無しさん
24/03/02 23:33:08.53 cJV8TwgI.net
>>296
さすが低リテラシー
辞書すらまともに持ってない上に低品質の情報ソースしか見ない
そりゃクソコード量産するわw

302:デフォルトの名無しさん
24/03/02 23:41:41.36 zM2ZA6hl.net
>>301
一目でashworthってわかるコメントすげえな

303:デフォルトの名無しさん
24/03/02 23:47:27.34 i4kr5cxv.net
URLリンク(qiita.com)
のコメントで
> 条件分岐が商業的な理由でどんどん仕様変更されていく事があるのは、仕事でプログラミングをした事があれば分かりませんか?
とか
> 多分、これが仕様書か基本設計書に書かれるんですよね。
>
> A: 4の倍数ならばうるう年
> B: 100の倍数ならば平年
> C: 400の倍数ならばうるう年
> そうしたら、この仕様に沿った形でコード書かないと。
とか、主張としては一理あること言ってるのに400の倍数は100の倍数に含まれるとか利用した記事主のコード支持してんのわけわからんなあ。
結局気に入らない相手にケチつけたいだけなんだよなあ。

304:デフォルトの名無しさん
24/03/03 00:28:36.24 ELcAnTIw.net
>>301
weblio知らないなんてインターネットリテラシー低すぎますよw

305:デフォルトの名無しさん
24/03/03 13:38:29.39 korTDzLq.net
> 多分、これが仕様書か基本設計書に書かれるんですよね。
>
> A: 4の倍数ならばうるう年
> B: 100の倍数ならば平年
> C: 400の倍数ならばうるう年
> そうしたら、この仕様に沿った形でコード書かないと。
仕様に沿った形というとこういうコードだよなあ。
def is_leap_year(year):
 leap_year = False
 # A: 4の倍数ならばうるう年
 if year % 4 == 0:
  leap_year = True
  # B: 100の倍数ならば平年
  if year % 100 == 0:
   leap_year = False
   # C: 400の倍数ならばうるう年
   if year % 400 == 0:
    leap_year = True
 return leap_year
仕様変更に対応し易いという点では優れてるかな。うるう年判定にそれが必要かは疑問ではあるが。

306:デフォルトの名無しさん
24/03/03 13:40:04.83 korTDzLq.net
『リーダブルコード』に洗脳されたのかナントカの一つ覚えよろしく早期リターンを勧める人Qiitaでは見掛けるけど仕様からは逸脱しちゃうんで「仕様に沿った形でコード書かないと」という主張的にはナシだろうな。
def is_leap_year(year):
 # 4の倍数でないなら平年
 if year % 4 != 0:
  return False
 # 4の倍数で100の倍数でないならうるう年
 if year % 100 != 0:
  return True
 # 4の倍数で100の倍数で400の倍数でないなら平年
 if year % 400 != 0:
  return False
 # 4の倍数で100の倍数で400の倍数ならうるう年
 return True

307:デフォルトの名無しさん
24/03/03 14:21:08.84 korTDzLq.net
URLリンク(qiita.com)
> 多分、これが仕様書か基本設計書に書かれるんですよね。
>
> A: 4の倍数ならばうるう年
> B: 100の倍数ならば平年
> C: 400の倍数ならばうるう年
> そうしたら、この仕様に沿った形でコード書かないと。
おいおいashworth、「ただし」どこやった?
「仕様に沿った形でコード書かないと」ってどの口で言ってる?
URLリンク(qiita.com)
> うるう年と判定する条件は、以下のとおりである。
> A: 4の倍数の年は、うるう年
> B: ただし、100の倍数の年は、うるう年ではない(平年)
> C: ただし、400の倍数の年は、うるう年

308:デフォルトの名無しさん
24/03/03 14:31:47.57 korTDzLq.net
「ただし」がないとインデントは浅くできる。
def is_leap_year(year):
 leap_year = False
 # A: 4の倍数ならばうるう年
 if year % 4 == 0:
  leap_year = True
 # B: 100の倍数ならば平年
 if year % 100 == 0:
  leap_year = False
 # C: 400の倍数ならばうるう年
 if year % 400 == 0:
  leap_year = True
 return leap_year
「ただし」のありなしは仕様にある「4」「100」「400」の値が変われば結果に影響するのでこの点は重要。

309:デフォルトの名無しさん
24/03/03 14:49:33.76 dNrHcF7C.net
コードもクソだけどコメントもまたクソなんだよなぁ
クソコード書くやつ特有のコメントの書き方

310:デフォルトの名無しさん
24/03/03 16:04:43.33 +Cuj4OdR.net
ashworthの投稿はわかりやすいなあw

311:デフォルトの名無しさん
24/03/03 16:22:53.63 d7oKsZ8+.net
>>309
じゃあashworthが称賛してる記事主のコードを見てみよう。

> year = int(input())
> if year % 400 == 0: # 400の倍数なら「うるう年です。」
>   print("うるう年です。")
> elif year % 100 == 0: # 100の倍数なら「うるう年ではありません。」
>   print("うるう年ではありません。")
> elif year % 4 == 0: # 4の倍数なら「うるう年です。」
>   print("うるう年です。")
> else: # どれにも当てはまらなければ、「うるう年ではありません。」
>   print("うるう年ではありません。")

んー大差なくね?
つか出力するメッセージとコメントが被ってる分どうかという気がするわ。

312:デフォルトの名無しさん
24/03/03 17:17:37.89 sHthb9Xp.net
> A: 4の倍数ならばうるう年
> B: 100の倍数ならば平年
> C: 400の倍数ならばうるう年
> になります。
>
> ここで、AとBの条件に注目して、
>
> 100の倍数ならば、4の倍数である
> ことに気づくと、
>
> 100の倍数は平年。そして100の倍数でない4の倍数はうるう年。
> という形で、AとBの関係を整理することができます。
>
> 同様に、BとCについても、
>
> 400の倍数ならば、100の倍数である
> ので、
>
> 400の倍数ならばうるう年。そして400の倍数でない100の倍数は平年。
> という形で、BとCの関係を整理することができます。
>
> まとめると、ある西暦に対して、
>
> 400の倍数ならば、うるう年
> 400の倍数でない、100の倍数ならば、平年
> 100の倍数でない、4の倍数ならば、うるう年
> 4の倍数でないならば、平年
> ということになります。

これコメントに書かなくて良い理由がわからん

つか記事主も「ただし」勝手に削除しとるのなw

313:デフォルトの名無しさん
24/03/03 20:00:32.81 fa8lyE6P.net
初めて聞いた「カルノー図」に発狂してるashworthオモロw

314:デフォルトの名無しさん
24/03/03 21:02:10.90 Nvr74PJc.net
・if は個人的に「もし~なら」で言ってほしい
・「ただし」はプログラミング的な英単語がない気がするので(however的な?)、仕様書とかでも多用しないで欲しい
・else、elseifも「ただし」じゃないと思うので相応の日本語にしてほしい
・早期リターンしてほしい
400から順番にreturnしてもらえれば、ワイ的にはおけ
仕様変更の可能性に対してはとりあえず関数にしてればいい
マジックナンバーじゃねとかライブラリ使えとか色々あると思うけど、この関数が必要なんだろうからテスト通れば許容すると思う

315:デフォルトの名無しさん
24/03/03 21:47:18.39 B4rwo5Er.net
閏年の仕様が変わったら判定関数だけ置き換えればいいのだから
判定関数の中身なんて何でもいいのよ
割り算(剰余算)と分岐はCPUにとって非常に遅いから避けるとするならば例えばこんな感じ

fn is_leap_year(year: u64) -> bool {
 let q100 = (year * 42949673) >> 32;
 ((q100 & 3 == 0) | (q100 * 100 != year)) & (year & 3 == 0)
}

316:デフォルトの名無しさん
24/03/03 22:44:59.76 korTDzLq.net
>>315
107374182500年は平年? 閏年?

317:デフォルトの名無しさん
24/03/03 23:02:43.19 LRDbiCZ0.net
Rust推しは意識高い良く分かって馬鹿が多い印象

318:デフォルトの名無しさん
24/03/04 00:48:03.64 nt/dsevV.net
>>315
素直に100で割らない意味がわからん。
要らんことやって仕事増やすタイプだろお前。
pub fn is_leap_year(year: u64) -> bool {
 let q100 = year / 100;
 ((q100 & 3 == 0) | (q100 * 100 != year)) & (year & 3 == 0)
}
URLリンク(godbolt.org)

319:デフォルトの名無しさん
24/03/04 08:16:08.85 L2qxv/xY.net
>>315
> 閏年の仕様が変わったら判定関数だけ置き換えればいいのだから
> 判定関数の中身なんて何でもいいのよ

仕様通りに動作するコーディングできるようなってからカッコイイこと言おうなw

320:デフォルトの名無しさん
24/03/04 08:38:24.53 rKgJ7Cpp.net
>>308
あまり見かけねえ書き方で新鮮だな

321:デフォルトの名無しさん
24/03/04 09:02:08.19 4WAZxDSM.net
>>315
Rustって使ったことないんだけど動確してみた。書き方合ってる?
fn is_leap_year(year: u64) -> bool {
 let q100 = (year * 42949673) >> 32;
 ((q100 & 3 == 0) | (q100 * 100 != year)) & (year & 3 == 0)
}
fn main()
{
 let year = 107374182500;
 println!("is_leap_year({}) -> {}", year, is_leap_year(year));
}
実行結果:
is_leap_year(107374182500) -> true
URLリンク(wandbox.org)

322:デフォルトの名無しさん
24/03/04 09:41:48.67 ybOgKOgD.net
>>316 >>321
1000億年後の閏年とか低能丸出し
地球も存在しないぞ
それ以前に60万年後には誤差が半年となり夏冬逆転し無意味となる
それ以前にルールが変わるため大きな数に対応する意味がない

323:デフォルトの名無しさん
24/03/04 09:52:37.00 vH/xi8sY.net
日本語に弱いやつしかいないのに互いに馬鹿にしあってるの草

324:デフォルトの名無しさん
24/03/04 10:05:22.74 bg/wANq4.net
年を表す引数の型にu64使うのが頭悪い。引数型で表せる値について動作保証できないロジックも同様。
引数に4300億とか与えるとオーバーフローするし場合により異常停止するだろこのコード。実際にそういう引数は与えないと強弁したところで潜在的不具合であることに変わりない。

325:デフォルトの名無しさん
24/03/04 10:07:06.25 G+SI+9NC.net
話題に加われない>>323がashworthなの一目瞭然で草ww

326:デフォルトの名無しさん
24/03/04 10:17:08.86 nwGjv9Ax.net
URLリンク(wandbox.org)
> thread 'main' panicked at 'attempt to multiply with overflow', prog.rs:2:14
> note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

あっこれはカッコ悪いなw

>>315
> 割り算(剰余算)と分岐はCPUにとって非常に遅いから避けるとするならば例えばこんな感じ

素直に100で割ってればオーバーフローしないんだし優先順位間違ってるよ。

327:デフォルトの名無しさん
24/03/04 10:23:15.83 x5QmeQKx.net
Rust使いでニワカかあ。
自己評価と実力が合ってない雰囲気で質悪そう。

328:デフォルトの名無しさん
24/03/04 10:29:55.63 f2L8YBYP.net
え、今更入力値が何でもアリになるの?w

329:デフォルトの名無しさん
24/03/04 10:55:00.92 6oMfM7hM.net
仕様に入力値の範囲が決められてないのに実装者の都合で制限設けて良いって判断は流石に草

330:デフォルトの名無しさん
24/03/04 11:23:54.90 FbUIg7c9.net
じゃあバリデーションが必要だなww

331:デフォルトの名無しさん
24/03/04 13:14:12.60 L4FnNvvc.net
要件定義の際にクライアントに「1億年後も検証出来る仕様にした方がいいっすか?w」と聞かなかった上流の責任笑

332:デフォルトの名無しさん
24/03/04 13:53:50.23 GQyS78JX.net
Rust支持の人達って安全について意識が高く技術的レヴェルが高い層だと思っていたので自ら率先して不具合を作り込もうとする>>315の存在には驚いたんだけど、よく考えてみると
「えっ今どきEmacsなんて使ってるの?今はVSCode一択でしょ」
「えっ今どきSVNなんて使ってるの?今はgit一択でしょ」
「えっ今どきJavaなんて使ってるの?今はKotlin一択でしょ」
「えっ今どきC++なんて使ってるの?今はRust一択でしょ」
使ってる道具でマウント取ろうとする奴なんて昔からいるし使ってる道具が新しく洗練されてたとしてそれ使ってる奴の技術的高さを証明するものではないしなあ、変な先入観持ってたわと反省。

333:デフォルトの名無しさん
24/03/04 14:34:57.46 ks/ruwRx.net
>上流の責任笑
これが末端コーダーの考え方

334:デフォルトの名無しさん
24/03/04 15:14:26.33 L4FnNvvc.net
>333
ヒント:冗談

335:デフォルトの名無しさん
24/03/04 16:34:00.40 FbUIg7c9.net
入力値に制限がないなら、
文字列とか小数とかそれ以外のパラメータなときを考慮してない
今までのコードは軒並み全部ダメってことでw

336:デフォルトの名無しさん
24/03/04 17:50:07.95 +mqsOFjA.net
>>334
何をバカにされてるかわかってない辺りがまさに末端コーダー

337:デフォルトの名無しさん
24/03/04 17:59:24.41 vb1ocUz9.net
>判定関数の中身なんて何でもいいのよ
判定関数自体の保守性が論点にも関わらずそれを無視した独りよがりのオナニー汚コードを恥ずかしげもなく披露するメンタリティが怖い

338:デフォルトの名無しさん
24/03/04 18:31:19.07 9eGnhSkR.net
>>335
元記事に整数と書いてあるんだからそこまで考える必要はないでしょ

339:デフォルトの名無しさん
24/03/04 19:15:00.88 L4FnNvvc.net
>336
納期近いのか?イライラしても仕事は進まんぞ

340:デフォルトの名無しさん
24/03/04 19:16:47.00 8GGqJ/7e.net
97/400の閏年は10万年で1ヶ月の誤差が出るため100万の入力すら対応する必要がない
そこへ億の入力をして騒ぐのはキチガイ

341:デフォルトの名無しさん
24/03/04 20:12:58.89 f2L8YBYP.net
整数、西暦なんて数値制限がないんだから、
型も限りなく無限にちかいbit、桁数まで対応しなきゃいけんのかw
こりゃ大変だなw

342:デフォルトの名無しさん
24/03/04 20:22:40.17 6JPPJUIM.net
現在のグレゴリオ暦を運用し続けたとして1兆年後どうなるか? みたいな計算をしたいとして、間違って良い理由はないんだよなあ。

343:デフォルトの名無しさん
24/03/04 20:30:16.70 k69OqpEV.net
>>322
>>315のコードでおかしな結果を出す一番近い年が107374182500年だと思ってる??

344:デフォルトの名無しさん
24/03/04 20:34:57.33 A8alMUdc.net
3320年で1日の誤差
10万年で1月の誤差
120万年で1年の誤差
季節が数か月ズレると役立たないから
多くても数十万年に対応してれば十分かな
それ以上の数値を持ち出す人は本質的に何が重要なのかを理解できていないバカ

345:デフォルトの名無しさん
24/03/04 20:52:01.50 BmASXDPG.net
> 多くても数十万年に対応してれば十分かな
クソコードは数十万年に対応出来てることを証明するのにも無駄に労力要るんだよなあ。

346:デフォルトの名無しさん
24/03/04 20:55:08.59 sb3IKn5X.net
> それ以上の数値を持ち出す人は本質的に何が重要なのかを理解できていないバカ
↑入力値によってはプログラムが落ちる事の重大さを理解してないアホ

347:デフォルトの名無しさん
24/03/04 20:59:22.65 E1/CqXZt.net
入力値によってプログラムが落ちると思っているアホがいるのか

348:デフォルトの名無しさん
24/03/04 21:07:19.90 lbPgOJLr.net
>>315のコードは
・なぜ引数yearの型がu64なのか
・yearを100で割れば良いところを2**32/100倍して32ビット右シフトなんて馬鹿なことをしてるのか
謎なのよなあ、こんなコード業務で書いたら絶対レビューでなんか言われるやつじゃん。
説明すれや >本人

349:デフォルトの名無しさん
24/03/04 21:27:56.24 cpsYzbII.net
今どきのコンパイラは、定数割り算を定数掛け算とシフトでコード生成するから、それ自体を問題にするのは知識不足としか。

350:デフォルトの名無しさん
24/03/04 21:30:45.48 Z3raS9US.net
>>347
>>326

351:デフォルトの名無しさん
24/03/04 21:56:19.34 ZAExDmnh.net
>>326
それDEBUGモードになってるね
RustはC/C++と同じく整数演算はオーバーフローせずラッピングされるよ

352:デフォルトの名無しさん
24/03/05 00:11:26.36 tUTq/Hb5.net
型でエラーになるのはダメやろw
有限な数値型を引数にする関数は全部ダメ

353:デフォルトの名無しさん
24/03/05 00:19:04.31 LgXFRYMx.net
それはあるな
少なくともbigintは必須

354:デフォルトの名無しさん
24/03/05 00:24:51.84 VNREUF6A.net
>>337
平日の昼間から一日中5chに張り付いてるようなやつらに保守性を説いても時間の無駄
理由は言わなくてもわかるよね?

355:デフォルトの名無しさん
24/03/05 00:40:04.95 ayHwglDl.net
関数内部の単なる数値演算に保守性もクソもないぜ
そんなところの保守性にこだわるやつは仕事できないやつ
それよりも複数のデータや複数の関数に関わるところの保守性をしっかりやればいい

356:デフォルトの名無しさん
24/03/05 05:36:37.94 htia+Qez.net
中身が何でもいいならわずかなパフォーマンス改善よりも楽に読み書きできるほうがいいわwwww

357:デフォルトの名無しさん
24/03/05 06:40:09.05 vd0jlnr0.net
非常に大きな値を扱える方がいい場合もあれば
実用の範囲だけを速く扱える方がいい場合もあれば
複雑になっても将来の拡張に備えた形にした方がいい場合もあれば
それら様々な前提があるのだから
それぞれの前提でそれぞれのふさわしい別々のコードになるのは当たり前
各々の前提を無視して批判するのは愚か

358:デフォルトの名無しさん
24/03/05 09:50:57.37 2lxN9jtN.net
>>351
実行時にオーバーフローを検出する運用も普通に可能だけど安全の意味分かってる?

359:デフォルトの名無しさん
24/03/05 10:58:46.36 e0di8bB0.net
>>351
> RustはC/C++と同じく整数演算はオーバーフローせずラッピングされるよ
CやC++でラッピングされるのは符号なし整数の場合だけ。
符号付き整数のオーバーフローは未定義動作になるので通常許されない。

360:デフォルトの名無しさん
24/03/05 11:09:30.17 xnazIivs.net
>>357
>非常に大きな値を扱える方がいい場合もあれば
>実用の範囲だけを速く扱える方がいい場合もあれば
>複雑になっても将来の拡張に備えた形にした方がいい場合もあれば
どの場合も保守性を無視したコードを書いていいわけじゃないんだぞ
ド素人さんw

361:デフォルトの名無しさん
24/03/05 11:10:48.88 kMFA7wVm.net
>>355
> 関数内部の単なる数値演算に保守性もクソもないぜ
>>315のクソコード見てから言え

362:デフォルトの名無しさん
24/03/05 11:33:45.43 ihc4PKcq.net
>>361
どう見ても同一人物だろw
アホか

363:デフォルトの名無しさん
24/03/05 11:52:26.48 9nHue/Qo.net
>>361
>>147のクソコード見てから言え!

364:デフォルトの名無しさん
24/03/05 12:09:50.59 3LKO8OZb.net
この狂人の会話についていけるやつが賢いと本気で思うやつおる?w

365:デフォルトの名無しさん
24/03/05 12:30:39.80 kMFA7wVm.net
>>363 ashworthの投稿は一目でわかるなw

366:デフォルトの名無しさん
24/03/05 18:44:35.96 1i72r55F.net
>>318
「let q100 = year / 100;」の方が生成コードが長く遅くなってるな
あくまでも速さ優先ということならば>>315
「let q100 = (year * 42949673) >> 32;」が正解でいいんじゃないか
あとは状況による使い分けだろう

367:デフォルトの名無しさん
24/03/05 19:35:33.31 xTYxmN7F.net
>>366
> あくまでも速さ優先ということならば
URLリンク(godbolt.org)
引数yearの型をu32にして普通に100で割るのが正解。

368:デフォルトの名無しさん
24/03/05 20:42:06.70 HwnQ5/nd.net
> あくまでも速さ優先ということならば>>315
> 「let q100 = (year * 42949673) >> 32;」が正解でいいんじゃないか
「自分は>>315じゃないけどこの人のコードが正解だと思いますよ」みたいな投稿よくできるなあ。

369:デフォルトの名無しさん
24/03/05 20:50:34.98 CyHqAHwW.net
周りが見てて赤面するような低レベル自演
それをいつも平気でするのが彼なんです


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

61日前に更新/278 KB
担当:undef