Qiita 4 - キータぞ、来たぞ、キータだぞー

■ このスレッドは過去ログ倉庫に格納されています
2024/01/17(水) 19:20:36.09ID:VohMlHbO
Hello hackers !
Qiitaは、エンジニアリングに関する知識を記録・共有するためのサービスです。
コードを書いていて気づいたことや、自分がハマったあの仕様について、
他のエンジニアと知見を共有しましょう ;)

https://qiita.com/

Qiita(キータ)は、Incrementsが運営するプログラミング情報のナレッジコミュニティ。
2016年現在で日本最大のプログラマーコミュニティとされている[1]。

https://internet.watch.impress.co.jp/docs/news/1025972.html

前スレ Qiita
https://mevius.5ch.net/test/read.cgi/tech/1542357242/
Qiita 2 - キータぞ、来たぞ、キータだぞー
https://mevius.5ch.net/test/read.cgi/tech/1658762410/
Qiita 3 - キータぞ、来たぞ、キータだぞー
https://mevius.5ch.net/test/read.cgi/tech/1685235361/
2024/02/26(月) 12:23:03.90ID:C4JMQyBo
>>215
Dの判定の後にEの判定は不要なのでコンパイラの最適化処理で削除されてるだけ。
2024/02/26(月) 12:55:05.94ID:miQRFcKA
つまり「ただし」の意味がわからずおかしなコードを書いたお前が悪いってことじゃね?w
Dより先にEを判定しなきゃだぞ?
218デフォルトの名無しさん
垢版 |
2024/02/26(月) 13:30:04.94ID:At+iGIXq
>>216
そりゃEの判定が不要になるコードを書いてるからだよね
コンパイラの出力結果の理由付けじゃなくてEよりDのルールを優先するコードにした理由を聞いてるんだけど?
2024/02/26(月) 13:49:14.24ID:K4z1iUSz
但し書きを列挙した場合でかつ包含関係が曖昧なら複数の解釈ができうるというのは理解できる
その上で前段までの判定条件がすべて重ねがけされたものとして扱うなら
DとEは「1200の倍数の倍数の年はうるう年ではない」という仕様記述1つにまとめられるので
仕様記述をそう変更した上でルール適用の優先順に書けばスッキリする

def isLeapYear(year):
 if year >= 2025:
  if year % 1200 == 0: return False
 if year % 400 == 0: return True
 if year % 100 == 0: return False
 if year % 4 == 0: return True
 return False
2024/02/26(月) 14:33:28.49ID:LKVz6N/l
>>219
うるう年判定でも仕様変更を前提としてコードを書くべきってのはashworthのトンデモ主張だけど、それに従うなら
・100の倍数は4の倍数を含む
・400の倍数は100の倍数を含む
と考えて逆順に判定すりゃいいってのは間違いだぞ。
仕様変更で400や100等の数字が別の値になる可能性も考慮する必要がある。
2024/02/26(月) 15:16:24.11ID:AHdtA0la
「但しがある場合は仕様を逆算する」ってashworth言うけど、彼はどこで習ったのかねえ
2024/02/26(月) 17:29:41.41ID:K4z1iUSz
>>220
依存関係のある複数のルールのうち依存先ルールを変更するなら
依存元ルールへ波及する影響も精査した上で仕様を変更するのが当たり前じゃない?
それがなされないような不適切な仕様変更に対してコードの構造だけで対処しようとしても意味がないと思うけど
2024/02/26(月) 17:33:14.29ID:f3ymwFB5
頭の悪いashworthとそれより頭の悪いアノンが言い争うスレ
2024/02/26(月) 18:21:17.14ID:3GAS9rL8
>>222
> 依存関係のある複数のルールのうち依存先ルールを変更するなら
> 依存元ルールへ波及する影響も精査した上で仕様を変更するのが当たり前じゃない?

仕様変更の理由なんて様々だし数字間違えてたから修正なんてこともあり得るわけでお前の都合の良い話されたところで意味ない。
2024/02/26(月) 18:54:20.03ID:q1duqwhP
https://qiita.com/kjm_nuco/items/fd16c2af6b089c4849cd#comment-7d9b1b2d3f1079b16316
> この記事を書いてらっしゃる @kjm_nuco さんが
>
> まとめると、ある西暦に対して、
>
> 400の倍数ならば、うるう年
> 400の倍数でない、100の倍数ならば、平年
> 100の倍数でない、4の倍数ならば、うるう年
> 4の倍数でないならば、平年
> ということになります。
>
> と、その導出の過程まで詳細に説明して結論付けているのに、それを完全無視して持論を唱えます?
> 4や100や400の値が仕様変更で別の数字になったら、そりゃ、導出も変わって結果も変わるでしょうよ。
> あなた、仕様変更があったらパラメタ書き換えるだけで検証しないんですか?

仕様変更前提のコードならロジックは変わらずにパラメタだけ変更されたなら該当するパラメタの修正だけで変更が済むのが理想だわなあ、もちろんコード変更したら動作確認もするけども。
100が4の倍数に含まれ400は100の倍数に含まれるというパラメタの値に依存したロジックなんて論外だろ。これでカルノー図書いて条件式を簡潔にするのにケチつけてたんだからわけわからん。キチガイと言う他ないわ。
2024/02/26(月) 18:56:53.65ID:f3ymwFB5
そいつがキチガイなのは見ての通りだが「ただし」がわからんのも相当だぞ
2024/02/26(月) 19:10:07.73ID:SrLJ7ICG
>>226
自分がキチガイであることは認めた上で
相手が「ただし」がわからんということにしたい作戦かあ。上手くいくと良いね。
228デフォルトの名無しさん
垢版 |
2024/02/26(月) 19:12:25.31ID:mjzxAH6O
> つまり「ただし」の意味がわからずおかしなコードを書いたお前が悪いってことじゃね?w
> Dより先にEを判定しなきゃだぞ?

「ただし」がわからん人の例↑
2024/02/26(月) 20:36:29.06ID:wuM0ykw9
これどっちもashworthじゃね?
孤独すぎてここでしか構ってもらえないんだろ
2024/02/26(月) 23:11:20.94ID:SMj/dcU6
例外を先にはじけ定石
2024/02/26(月) 23:34:55.82ID:B8OdOrdj
>>224
数字を間違えてたならその間違いの影響範囲を精査して仕様変更するのが当たり前
それをやらない前提の話をしてるなら上で書かれてたようにリテラシーの問題

>>225
リンク先は読んでないけど100とか400はパラメタじゃない
それに本来のうるう年の判定ルールにある「400の倍数の年はうるう年」というのは
400が100の倍数ということには全く依存していない
例えば400が401になれば100の倍数ではなく401の倍数の年もうるう年だし両方の倍数の年もうるう年になる
2024/02/27(火) 10:37:45.92ID:w0Y37g8I
>>231
本来のうるう年は400年間に97回のうるう年を設けるために設定されたルールだから400が100の倍数(100は400の約数)にめちゃくちゃ依存してるぞバカか
233デフォルトの名無しさん
垢版 |
2024/02/27(火) 10:56:12.21ID:rFgCegUY
>>232
全く反論になってなくて草
さすが低リテラシーw
2024/02/27(火) 11:19:02.15ID:eGpU60+1
自分に理解できない話=反論になってない

だからashworthは楽で良いよなw
2024/02/27(火) 11:59:55.37ID:+hF5aX7t
「ただし」「かつ」「または」の区別がついてないやつしかいなくて草
2024/02/27(火) 13:59:55.76ID:giHJXKz2
ただし=if(条件分岐)
かつ=&&(条件演算子)
または=or(条件演算子)
2024/02/27(火) 15:35:42.51ID:nHaZjTEs
>>236
それはギャグのつもりか本気で言ってるのかどっち?
2024/02/27(火) 16:08:42.50ID:inHdMvEK
間違いの指摘なら具体的にすれば良いだけのことなので
本気で区別がつかないのだろう。馬鹿ってかわいそう。
2024/02/27(火) 16:35:26.48ID:fpWUnxpT
>237 意味としては合ってるやろ
2024/02/27(火) 18:14:30.98ID:WP/FHrEp
>>236
ただし= unless
2024/02/27(火) 18:24:33.47ID:bwwr5oTI
>>231
> 数字を間違えてたならその間違いの影響範囲を精査して仕様変更するのが当たり前

思いっクソ馬鹿馬鹿しいこと言っててクソワロタww
今年一番ワロタw
242デフォルトの名無しさん
垢版 |
2024/02/27(火) 18:29:59.55ID:y8pZ0Jar
>>236
&&やorは一般的には論理演算子と呼ぶ
条件演算子は三項演算子とかのこと
243デフォルトの名無しさん
垢版 |
2024/02/27(火) 18:39:37.89ID:4Nh/0wVd
「かつ」「または」と同じように
「ただし」が箇条書きなどで複数ある場合
それがどの範囲にかかるかは文脈依存になる
2024/02/27(火) 20:10:55.74ID:nHaZjTEs
>>238
ギャグじゃなく本気で言ってたみたいだな
馬鹿ってかわいそう
2024/02/27(火) 21:18:51.78ID:K6/gYDs0
>>233
反論になってないというあんたの主張が理解できない
2024/02/28(水) 08:32:21.60ID:y4kbkltn
「ただし」は真となる値の範囲を狭めるもので条件演算子の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があるとないとで結果が違うだろ?
同じ結果になるコードを書くお前がアホなんだよ
(ただしお前にはこんなに丁寧に説明しても理解できない)
2024/02/28(水) 08:36:07.49ID:LGkVWGjh
>>246
「ただし」自体の説明はそれで合ってるがDのイミフな日本語を機械的にコード化したせいでコードは間違ってるぞ
2024/02/28(水) 09:56:18.74ID:MlGp2l7l
>>246
> A: 4の倍数の年は、うるう年
> D: ただし30の倍数の年は、うるう年
> E: ただし、30と4の倍数の年はうるう年ではない

AとDでうるう年である条件を定義してEで例外を定義するならDの「ただし」は余計。

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

↑は完全に間違い。馬鹿丸出し。
2024/02/28(水) 10:14:51.35ID:FdH5cnJ+
>>246
> A: 4の倍数の年は、うるう年
> D: ただし30の倍数の年は、うるう年
> E: ただし、30と4の倍数の年はうるう年ではない

Dの条件を「(4の倍数で)30の倍数の年はうるう年」のつもりで言ってるなら頭悪いな。
「(4の倍数で)30の倍数の年はうるう年」は

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

に反しない条件なのでDは意味ない。
仕様については問い合わせされるレベルで頭悪い。
250デフォルトの名無しさん
垢版 |
2024/02/28(水) 10:47:17.39ID:f0s7DZ+T
やはり日本語リテラシーの異常な低さがクソコードを量産する根本原因だったか
251デフォルトの名無しさん
垢版 |
2024/02/28(水) 11:22:49.01ID:yOiLGWUp
> y%4==0 && y%30==0 && !(y==30&&y==4)
なんじゃこりゃww
252デフォルトの名無しさん
垢版 |
2024/02/28(水) 11:26:06.11ID:yOiLGWUp
> 仕様については問い合わせされるレベルで頭悪い。
仕様を書く立場にも仕様に遠慮なく問い合わせできる立場にもないんだな
頑張れよ
2024/02/28(水) 11:27:26.02ID:/piA0aUk
「かつ」「または」の2つは && or で限定できるけど
「ただし」に関しては文脈に依存するやろ

https://dictionary.goo.ne.jp/word/但し/
2024/02/28(水) 11:28:37.52ID:/piA0aUk
>253
ごめんURLズレた
「ただしとは」で検索して文例見てくれれば分かると思う
2024/02/28(水) 11:51:28.08ID:OtjJg4S7
>>252
「イミフなんだがアタマ大丈夫?」

みたいな問い合わせを日常的に貰ってるということかあ。
問い合わせされる方もする方も大変そうですねw
2024/02/28(水) 11:54:35.90ID:Sa1fCZXj
ashworthが一晩掛けた渾身の投稿>>246がフルボッコで草w
2024/02/28(水) 13:46:04.16ID:7qoDRe0G
> A: 4の倍数の年は、うるう年
> D: ただし30の倍数の年は、うるう年
> E: ただし、30と4の倍数の年はうるう年ではない

↑を

https://qiita.com/kjm_nuco/items/fd16c2af6b089c4849cd#comment-8eb8979a5b3ed36b80fc
> それ、問題文の条件のまま書いちゃダメなんですよね。
> 「ただし」がある場合は前出の条件を否定してくるので、条件の順番通りに書くと破綻します。
> だから、「ただし」がある場合は条件を逆に記述していくのが鉄則です。

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デフォルトの名無しさん
垢版 |
2024/02/28(水) 14:16:41.38ID:EtLD5Apj
>>253
「かつ」や「または」もプログラムで言うoperator precedenceが明確に決まってるわけじゃないから文意が形式的に一意に決まるわけじゃないよ
箇条書きで列挙したような場合は特に
259デフォルトの名無しさん
垢版 |
2024/02/28(水) 15:37:54.21ID:6YiW03rz
>>252
原作者とコミュニケーションがとれない脚本家を彷彿とさせるな
260デフォルトの名無しさん
垢版 |
2024/02/28(水) 15:59:07.63ID:lY+FE6N6
>>259
どちらかと言うと原作者を神扱いしすぎていつも万策尽きるアニメ制作会社の下っ端社員のほうが近い
2024/02/28(水) 16:12:01.96ID:Tb528kvr
> > y%4==0 && y%30==0 && !(y==30&&y==4)
> なんじゃこりゃww

禿ワラw

> && !(y==30&&y==4)

特に↑のとこ正気ではないなww
2024/02/28(水) 16:28:39.17ID:mI6hy9de
>258
確かにそうだね。クライアントから要件をヒアリングして仕様定義する時にこういった日本語の難しさはヒシヒシと感じるなぁ

結局プログラムコードに落とし込む時に一意で無ければいけないから曖昧な日本語や包括的な意味で指定されてる言葉は具体化させる必要があるけど、クライアントに対して具体的な話をすればするほど(長くなりそうだなぁ…)と思われて嫌がられるというジレンマw

ちょっと話変わって興味湧いてきた議題があるんだけど日本語以外の言語はどうなんだろう?
例えば他の国の言葉って、伝達手段という意味で要件定義やプログラムに落とし込みやすいorしにくい、とかあるのかな
文化や国民性とも大いに関わりありそうだなぁ、とも思った
2024/02/28(水) 18:10:53.46ID:m90mYtIt
ashworthはほんと日本語不得意だなw
264デフォルトの名無しさん
垢版 |
2024/02/28(水) 21:49:14.47ID:XH++Q0uC
>>257
仕様記述をどう解釈するかという問題と解釈後の仕様をどうコードで表現するかという2つの問題を分けて考えないと
仕様記述に曖昧さあるからといってクソコードを正当化できるわけじゃないよ
2024/02/28(水) 22:20:11.05ID:q7g3yYxU
>>264
なんか勘違いしてるみたいだけど
・ashworthの書いた仕様がクソ
・ashworthの説明するコーディング方法がクソ
という単純な話なんだけど。

こんな馬鹿な仕様でこんな馬鹿なコーディングする訳ないじゃんashworthじゃあるまいし。
2024/02/28(水) 22:24:30.36ID:BRTW/12W
ashworthって自分に言われたこと他人に転嫁しようとよくするけど朝鮮人みたいな性格しとるよなあ。
2024/02/28(水) 22:59:12.11ID:jGUEhuN8
発達障害なんだよ多分
ウチの職場にも似たような奴がいた
2024/02/29(木) 00:33:10.53ID:mUMEkWUK
可読性ウンコな書換してる@fujitanozomu
記事の本質から外れすぎ@ashworth

子供じゃねえんだからさあ…
2024/02/29(木) 08:43:01.87ID:Rokc00Z5
本質から外れてるんじゃなくて単に間違ってるのがashworthなんだが
自己認識おかしいぞ?
2024/02/29(木) 08:53:25.88ID:KHMFPlQr
ashworthは他人を馬鹿にするの控えると良いよ。お前より馬鹿なんてそうはいないんだから。
271デフォルトの名無しさん
垢版 |
2024/02/29(木) 10:25:49.86ID:djbck9L0
>>265
君が書いてる>>147は誰がどう見てもクソコードじゃん
もしかして自覚ないの?
2024/02/29(木) 11:40:45.51ID:q8VatjCc
> 誰がどう見てもクソコード

・具体的な指摘がない
・良例の提示がない

ashworthっていっつもこんなだねw
本人的にはこれでなんか言ってるつもりなんだろうか?
273デフォルトの名無しさん
垢版 |
2024/02/29(木) 11:44:12.15ID:9WgSc6Jr
これは次のようになる(キリッ
y%4==0 && y%30==0 && !(y==30&&y==4)

「誰がどう見てもクソコード」ってこういうのでしょw
2024/02/29(木) 13:00:43.45ID:XQlhxPO9
「ただし」がわからなくて恥をかいたのを一生懸命ごまかしてる感じはもういいよ
2024/02/29(木) 13:28:37.00ID:Sd8AzslA
> >274
ashworthに恥の概念なんてあるわけないでしょ
2024/02/29(木) 16:22:49.93ID:U6+pmEGF
://b.hatena.ne.jp/entry/s/qiita.com/7mpy/items/960bd24f3f77a4d7cef4
APIが知られた時点で非公開APIでない
ダイソーの意図が公開されたか分からないがコメントを公開したら非公開APIでない
APIはセキュリティのかけらもなく誰でも使えるようになってる
記事が消えてるがAPI使っても問題ないんじゃね?
セキュリティがあるかが使ったらいけないかの基準
記事が問題あるかのようなコメントがついてるが問題ないんじゃね?
2024/02/29(木) 23:14:56.26ID:9xtDm8CY
どう見ても釣りだろうが、リバースエンジニアリングしないとわからないAPIを公開APIとするのは無理がある
278デフォルトの名無しさん
垢版 |
2024/03/01(金) 00:46:54.88ID:m8SX0+fF
>>273
どちらもクソだけどそっちのは大半の人が一目で間違ってると分かるから軽度のクソ
>>147>>218辺りで指摘されてる単純な間違いが構造がグチャグチャなせいではるかに見つけにくくなってるのでより重度のクソ

免許センターは後者かなぁw
まああれはプログラミングの問題ではないと思うが
279デフォルトの名無しさん
垢版 |
2024/03/01(金) 11:47:17.07ID:4HHiluMX
>>278
x年前の同日とかy年後の同日を求める計算を手動でやってバグってたんだろ
仮に標準ライブラリの機能を使ってたとしてもテストするのが常識なんだが
うるう年の簡単な例でバグったクソコード書いてドヤるようなやつらと同じで低能力者に一般常識は通用しない
2024/03/01(金) 15:15:33.63ID:g8UXT5i1
>>278
ashworth馬鹿なんだから投稿すんのやめりゃいいのに。
これ以上恥をかきたい意味がわからん。
281デフォルトの名無しさん
垢版 |
2024/03/01(金) 15:31:32.19ID:upQJ9nhR
>>218
> そりゃEの判定が不要になるコードを書いてるからだよね

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

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

> D: ただし30の倍数の年は、うるう年
> E: ただし、30と4の倍数の年はうるう年ではない
282デフォルトの名無しさん
垢版 |
2024/03/01(金) 17:51:14.14ID:b+hVzDXB
>>281
>Eの判定が不要なアホな仕様のせいだぞ
Eの判定が不要だと判断したのはEよりDのルールが優先されるべき考えだからだよね?
であればどういう理由もしくはどういう解釈によってEよりDが優先されると考えたのかを説明してよ
2024/03/01(金) 20:46:32.11ID:G1CP139A
> Eの判定が不要だと判断したのはEよりDのルールが優先されるべき考えだからだよね?

違うぞ。
DよりEのほうが条件として先に書かれているので判定が先に行われるってだけ。
Dの後の

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

の条件判定はAとDで既に行われている内容なので削除可能。
結果、

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

↑の条件判定と結果は

ただし30の倍数の年は、うるう年ではない

にまとめられる。
2024/03/01(金) 21:21:21.20ID:6oWPDYWL
>> A: 4の倍数の年は、うるう年
>> D: ただし30の倍数の年は、うるう年

こんな書き方は普通しない
AもDも同じ「うるう年(である)」とあるのに、逆接の接続詞である「ただし」で結んでるのは日本語としておかしい

> D’: 30の倍数の年も、うるう年
とするか、AとDの間に
> X: 4の倍数でない年は、うるう年ではない
を入れるべきだろう
2024/03/01(金) 22:07:34.93ID:RZn8d5pS
>>283
「ただし」という日本語知らない人かな?
2024/03/01(金) 22:20:09.43ID:kL3oeUQC
>の条件判定はAとDで既に行われている内容なので削除可能。

たしかに「30と4の倍数」という日本語の書き方がandなのかorなのか判別しにくいが
わざわざ意味のない方の解釈をして「それは意味がない」という指摘するのはアホっぽい
2024/03/01(金) 22:37:47.13ID:Y2FpEKvZ
 神奈川、新潟、岡山、愛媛の4県で先月29日、運転免許証を発行する機械にシステム障害が起き、一時、免許証を発行できない事態となりました。

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

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

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

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

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

(「グッド!モーニング」2024年3月1日放送分より)
288デフォルトの名無しさん
垢版 |
2024/03/01(金) 23:34:09.01ID:Q+OPlW8S
>>283
すまんけど言ってることがよく理解できなかったわ
生産的じゃなさそうなのでこの話はもうやめとく
2024/03/02(土) 11:50:59.70ID:BHfB/iOz
ashworth、自分から言い出した仕様に完敗w
290デフォルトの名無しさん
垢版 |
2024/03/02(土) 13:58:32.22ID:tdDj2Vwb
都合が悪いレスは全てashworth認定しないと自我が保てなくなってるんだな
ここまでいくと病気だから早めに病院行けよな
2024/03/02(土) 15:28:11.69ID:nmjvrmx1
馬鹿言ってる投稿を「都合が悪いレス」と曲解する辺りashworth丸出しで草w
2024/03/02(土) 15:47:12.16ID:cvT/gLx6
> E: ただし、30と4の倍数の年はうるう年ではない

これって

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

いろんな解釈可能だけど、こんな仕様書く奴は素人よな。
293デフォルトの名無しさん
垢版 |
2024/03/02(土) 17:25:47.49ID:BHfB/iOz
>>286
https://godbolt.org/z/coTEYncxr
https://godbolt.org/z/Kd9WW1xEc

andでもorでもEの条件判定は削除されるんだがアホはお前だろw
294デフォルトの名無しさん
垢版 |
2024/03/02(土) 17:38:03.69ID:/d2p+fy2
>>284
>逆接の接続詞である「ただし」で結んでるのは日本語としておかしい
「ただし」は逆接の接続詞ではないぞ
誤った思い込みが根本原因だったか
2024/03/02(土) 19:13:35.61ID:lWfSp3Yb
ashworth曰く

https://qiita.com/kjm_nuco/items/fd16c2af6b089c4849cd#comment-8eb8979a5b3ed36b80fc
> 「ただし」がある場合は前出の条件を否定してくる

だそうだから辞書になんて書かれていようが奴の言ってる「ただし」については
逆接の接続詞という理解で合ってる。
2024/03/02(土) 19:49:38.94ID:3j0sAxwL
>>294
ほい
https://thesaurus.weblio.jp/content/%E3%81%9F%E3%81%A0%E3%81%97

> 条件付け・逆接の補足
> 但し しかし とはいえ とは言っても それでもなお だけど けれども ですが かと言って さりとて そうはいっても
2024/03/02(土) 19:51:21.69ID:JOsAKrM4
>>294もそうなんだけど「ただし」を誤解してるのが誤りの原因であるという主張、全部ashworthよねw
2024/03/02(土) 22:38:28.08ID:73jLSJQo
>>293
笑ってしまうほど糞コード。
最初に4の倍数じゃないとスキップされてしまう時点でおかしいと思わんのか。
2024/03/02(土) 23:12:36.56ID:ucoX/K/i
「最初に4の倍数じゃないとスキップされてしまう」のがおかしい理由を説明しない辺りでashworthって丸わかりなんだよなあw

そんなに悔しかったかww
2024/03/02(土) 23:20:14.73ID:Xz9OeIFX
うるう日にしか発生しないバグ
zenn.dev/razokulover/articles/7001ed233137e5
ちなみにChatGPTに先の要件を伝えて生成してもらったコードもうるう年が考慮されておらず手直しが必要だった。
AIで生成されたコードが要件に合うかどうかを読み解ける程度の力はまだ我々には必要そう。
301デフォルトの名無しさん
垢版 |
2024/03/02(土) 23:33:08.53ID:cJV8TwgI
>>296
さすが低リテラシー
辞書すらまともに持ってない上に低品質の情報ソースしか見ない
そりゃクソコード量産するわw
2024/03/02(土) 23:41:41.36ID:zM2ZA6hl
>>301
一目でashworthってわかるコメントすげえな
303デフォルトの名無しさん
垢版 |
2024/03/02(土) 23:47:27.34ID:i4kr5cxv
https://qiita.com/kjm_nuco/items/fd16c2af6b089c4849cd

のコメントで

> 条件分岐が商業的な理由でどんどん仕様変更されていく事があるのは、仕事でプログラミングをした事があれば分かりませんか?

とか

> 多分、これが仕様書か基本設計書に書かれるんですよね。
>
> A: 4の倍数ならばうるう年
> B: 100の倍数ならば平年
> C: 400の倍数ならばうるう年
> そうしたら、この仕様に沿った形でコード書かないと。

とか、主張としては一理あること言ってるのに400の倍数は100の倍数に含まれるとか利用した記事主のコード支持してんのわけわからんなあ。
結局気に入らない相手にケチつけたいだけなんだよなあ。
2024/03/03(日) 00:28:36.24ID:ELcAnTIw
>>301
weblio知らないなんてインターネットリテラシー低すぎますよw
305デフォルトの名無しさん
垢版 |
2024/03/03(日) 13:38:29.39ID:korTDzLq
> 多分、これが仕様書か基本設計書に書かれるんですよね。
>
> 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デフォルトの名無しさん
垢版 |
2024/03/03(日) 13:40:04.83ID:korTDzLq
『リーダブルコード』に洗脳されたのかナントカの一つ覚えよろしく早期リターンを勧める人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デフォルトの名無しさん
垢版 |
2024/03/03(日) 14:21:08.84ID:korTDzLq
https://qiita.com/kjm_nuco/items/fd16c2af6b089c4849cd#comment-1dd48f5238d4a2c96c3c
> 多分、これが仕様書か基本設計書に書かれるんですよね。
>
> A: 4の倍数ならばうるう年
> B: 100の倍数ならば平年
> C: 400の倍数ならばうるう年
> そうしたら、この仕様に沿った形でコード書かないと。

おいおいashworth、「ただし」どこやった?
「仕様に沿った形でコード書かないと」ってどの口で言ってる?

https://qiita.com/kjm_nuco/items/fd16c2af6b089c4849cd
> うるう年と判定する条件は、以下のとおりである。
> A: 4の倍数の年は、うるう年
> B: ただし、100の倍数の年は、うるう年ではない(平年)
> C: ただし、400の倍数の年は、うるう年
308デフォルトの名無しさん
垢版 |
2024/03/03(日) 14:31:47.57ID:korTDzLq
「ただし」がないとインデントは浅くできる。

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デフォルトの名無しさん
垢版 |
2024/03/03(日) 14:49:33.76ID:dNrHcF7C
コードもクソだけどコメントもまたクソなんだよなぁ
クソコード書くやつ特有のコメントの書き方
2024/03/03(日) 16:04:43.33ID:+Cuj4OdR
ashworthの投稿はわかりやすいなあw
2024/03/03(日) 16:22:53.63ID:d7oKsZ8+
>>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("うるう年ではありません。")

んー大差なくね?
つか出力するメッセージとコメントが被ってる分どうかという気がするわ。
2024/03/03(日) 17:17:37.89ID:sHthb9Xp
> 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
2024/03/03(日) 20:00:32.81ID:fa8lyE6P
初めて聞いた「カルノー図」に発狂してるashworthオモロw
2024/03/03(日) 21:02:10.90ID:Nvr74PJc
・if は個人的に「もし~なら」で言ってほしい
・「ただし」はプログラミング的な英単語がない気がするので(however的な?)、仕様書とかでも多用しないで欲しい
・else、elseifも「ただし」じゃないと思うので相応の日本語にしてほしい
・早期リターンしてほしい

400から順番にreturnしてもらえれば、ワイ的にはおけ
仕様変更の可能性に対してはとりあえず関数にしてればいい
マジックナンバーじゃねとかライブラリ使えとか色々あると思うけど、この関数が必要なんだろうからテスト通れば許容すると思う
2024/03/03(日) 21:47:18.39ID:B4rwo5Er
閏年の仕様が変わったら判定関数だけ置き換えればいいのだから
判定関数の中身なんて何でもいいのよ
割り算(剰余算)と分岐はCPUにとって非常に遅いから避けるとするならば例えばこんな感じ

fn is_leap_year(year: u64) -> bool {
 let q100 = (year * 42949673) >> 32;
 ((q100 & 3 == 0) | (q100 * 100 != year)) & (year & 3 == 0)
}
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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