アカウント名:
パスワード:
テスト項目はFirefoxをインストールしてこの拡張機能をインストールするとSQlite+Windowsファイル共有でグループ全体で共有できます(キリ
ならやったことあります。DBファイルをファイルとして共有とかバッドノウハウ
問題:入力値の先頭を0埋めして7桁に揃えなさい
自分はつい先日同じような要件を提示され、「10000000+入力値」して下7桁を文字列変換して返す仕様にしました。
修正履歴に残る名前がまあ、それなわけだ。
ここがよくわからないので親コメさんにお聞きしたいのですが、
について教えていただけません?
前提1. 入力が数値に変換できる前提2. 入力は0以上の値である
1はここでは言わずもがなでいいとして、2はまずいな。負数だと頭に符号がつくから、"0000000" + x で右7桁を返す方法も同様にまずい。負数を入力エラーとする仕様なら動く。ただ、0で始まる整数値は8進数と認識されることもあるから、頭0埋めの仕様がそもそも良くない。
どっちも良くないのは言うまでもないですが、どうせならきちんと異常終了してエラーを返してくれる方がマシですその方が、誰の目にも明らかに異常が認識できますからとにかく検品だけ通過して、後は野となれ山となれで放り出して逃げること前提なら別ですがw
ただ、0で始まる整数値は8進数と認識されることもあるから、頭0埋めの仕様がそもそも良くない。
言いたいことは理解できるけど、例えば銀行の口座番号とか銀行間で桁が揃っていない場合は 「最大桁の銀行に合わせて頭0埋めして取り扱う」 という慣例が延々と引き継がれているわけで、システムの見地から理想を言ってもどうにもならないよ。 #あくまでも口座番号は例えね。今は統一されているかも?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日々是ハック也 -- あるハードコアバイナリアン
バッドノウハウを (スコア:0)
Re: (スコア:1)
「VSS使ったことありますか?」キリッ
「あっ、コード修正したら、変更前の部分はわかりやすいようにコメントにしておいてください」キリッ
とか言われてもんにょりしている私が通りますよ。ええ、いろいろな意味で。
コの業界、文明以前の呪術的な状態がまだ続いているところもあるんだなあ。
おかげで、帰ってから趣味のプログラミングがはかどる事。
#存在自体がホラー
Re:バッドノウハウを (スコア:1)
「テスト項目は(Excelの)仕様書をコピーして、記述の後ろに■と日付を入れていってください」キリッ
まあ、何が言いたかったかというと、それはもう十年くらい前に自分が通過してはまってきた道だという事と、
このタイムスリップした感をどうやって修正してくかね。
#存在自体がホラー
Re:バッドノウハウを (スコア:2)
テスト項目はFirefoxをインストールしてこの拡張機能をインストールすると
SQlite+Windowsファイル共有でグループ全体で共有できます(キリ
ならやったことあります。
DBファイルをファイルとして共有とかバッドノウハウ
誤記 FireFox
巫女 Firefox [mozdev.org]
バッドノウハウですらねえ (スコア:0)
問題:入力値の先頭を0埋めして7桁に揃えなさい
答え:入力値の文字列長を取り、0〜6までのcase文でそれぞれ対応する個数の"0"を先頭につける
修正履歴に残る名前がまあ、それなわけだ。
Re: (スコア:0)
自分はつい先日同じような要件を提示され、「10000000+入力値」して下7桁を文字列変換して返す仕様にしました。
ここがよくわからないので親コメさんにお聞きしたいのですが、
について教えていただけません?
Re: (スコア:0)
>自分はつい先日同じような要件を提示され、「10000000+入力値」して下7桁を文字列変換して返す仕様にしました。
上記の実装で暗黙の前提としている条件を述べ、そのままだと起こりうる問題点を挙げよ。
俺は "0000000" + x で右7桁取るだけど。(ただし、Cの場合を除く)
Re:バッドノウハウですらねえ (スコア:1, おもしろおかしい)
Re: (スコア:0)
Re: (スコア:0)
前提1. 入力が数値に変換できる
前提2. 入力は0以上の値である
1はここでは言わずもがなでいいとして、2はまずいな。
負数だと頭に符号がつくから、"0000000" + x で右7桁を返す方法も同様にまずい。
負数を入力エラーとする仕様なら動く。
ただ、0で始まる整数値は8進数と認識されることもあるから、頭0埋めの仕様がそもそも良くない。
Re: (スコア:0)
入力は7ケタを超えない
さて、整数であることを確認する方法は?
Re: (スコア:0)
テストケース→OKパターン
0→0000000
1→0000001
9999999→9999999
123456789→1234567 or 2345678 or 3456789
-1→00000-1
hoge→000hoge
Re: (スコア:0)
意図しない入力で異常終了するよりは誤動作でも動作する方に倒れるほうがいいと思わないか?
Re: (スコア:0)
どっちも良くないのは言うまでもないですが、どうせならきちんと異常終了してエラーを返してくれる方がマシです
その方が、誰の目にも明らかに異常が認識できますから
とにかく検品だけ通過して、後は野となれ山となれで放り出して逃げること前提なら別ですがw
Re: (スコア:0)
意図しない入力があった場合は落ちます。キリッですか。
そんなコード残される身にもなってくれ。
Re: (スコア:0)
言いたいことは理解できるけど、例えば銀行の口座番号とか銀行間で桁が揃っていない場合は
「最大桁の銀行に合わせて頭0埋めして取り扱う」
という慣例が延々と引き継がれているわけで、システムの見地から理想を言ってもどうにもならないよ。
#あくまでも口座番号は例えね。今は統一されているかも?