アカウント名:
パスワード:
VB.NETで文字数をカウントする処理を書かせたら、
1.配列に1文字ずつ文字を切り出して入れて2.配列の内容をFor文で1文字ずつ読み出してループ回数を取得3.ループ回数を結果として返す
みたいなのを書いてくるような組織(実話)に対しては、最初にガツンと釘を刺すという意味で有効だとおもいました。あぁ、あと、同じくVB.NETでフラグ的な位置づけの変数をStringで宣言して「"True"」とか突っ込むようなチームとか。
#いずれも実話
時間は掛かりますが、将来のことを考えるとレベルアップの一手段として有効だと思います
具体例がいろいろ挙がっていますが、一般常識不足(いわゆるお約束、定石から外れている)もっと簡単に記述できる(ライブラリにあるのに、等)ラッパを何重にもかぶせていて実体に到達しない(不要だし、却ってわからない)無駄に計算資源、メモリ資源を使いすぎ(それでもできるけど、意味ないし)アルゴリズム的にダメ(経験・知識不足か、考えるのを放棄しているのか)コンパイラで最適化が掛からない(神様がよろしくやってくれる訳ではない)CPUの特性上遅い(キャッシュだとかレジスタの本数だとかを考えると無理がある)読みにくい(美的センス?頭の構造がそうなのかも)
とかには効くのではないでしょうか?
>「"True"」Cのソースでそゆの見た事ある。「condition == "true"」みたいに文字列へのポインタで比較してるの。これ、ネットワーク界隈では結構名が売れてるブツな。# 同じ文字列はリンカなりコンパイラなりがまとめてくれるけどさー。
自分も似たような状況でコードレビューしてて、とあるショートカットキーを押すと例外吐いて落ちるイースターエッグが仕込まれているのを見つけたことがありますね。
説明が足らないんじゃない?
文字のエンコード,OS,記述方向(左から右)に依存せず、制御コードを考慮した文字数カウント処理なら、1週間あっても足りないよ。
そこはライブラリを使うとこじゃね?UNIX系ならwide characterとmultibyte characterの変換を知ってればいいだけだし、1分でかける。むしろ0からそのコードを書こうとしたら止めるべきでしょ。
Windowsはしらないや。
ICU使った方がいいかもしれんな。
でも、元コメントに
> VB.NETで文字数をカウントする処理を書かせたら、
って書いてあるんで、標準のlengthではだめなケースだったのではないかと。 そうでないんだったら、そんな指示を出した方がお馬鹿だったのでは?
文字数に応じた処理なんていくらでもあるだろうよ。そこでわざわざ lengthプロパティを使え とか書かないといけないとかどんだけバカかと。
文字数を使う処理じゃなくて、「文字数をカウントする処理」を書かせた、とかいてますが。
で、問題あったの!?基本的なスペック(要求時間や実行サイズ・動作確認)を満たしていれば、問題無いと思うけど。要件として、上記のような手法はとらないと明記されていなければ、受け入れる側に問題あり。<イチャモンや受け入れ側のスキル不足
上記の例では、もっとスマートに書けるのはわかるし、そうするべきであるのも分かるが、やってはイケナイ手法とまでは思えない。(環境によってはそうするのがベターな場合もある<ループ)
コードレビューの意義って、本当は作成者の思い込みによるバグ混入(たまたま動いてた)ってケースを見つけるためにあると思う。<見る(指摘する)側が余程スキルが高くないと、ほとんどの場合見つからないのが問題。<大概重箱の隅をつついて終了。(変数名がおかしいとか、マクロの宣言名が変とか)
今ひとつわかりにくいので質問です。
VB.NETだったら文字列の長さは自分で処理書かなくても取得できますよね?それも知らずに自分で処理を書いているような馬鹿ども、って意味でしょうか?
まあ普通にそんなん標準関数で一発だろ的な処理内容なので、1文字ずつコピーしてくる段階で数えればよくね?的な話として読んだんだが、
どっちにしろ、こんな阿呆な方法でやるな!とか書くくらいなら、どうするべきだったかくらいは書いておくべきだよな。
簡単な話、「以前から使っているVBと名が付いた方が安心だし、それで困っていないから、問題とも思わない」。細かく言うなら
-大量に居るVB6軍団がVBとVB.NETはほぼ同じだといまだに思っている人が多い。 (実際、使い始めて「えらく違う」と驚く人をここ2年くらいで目撃してます)-その上司も同様。Cと名が付く言語よりVBと付く方が簡単だと思っている。-まぁ実際問題、VB6以前とほぼ同じに扱ってもそれっぽくできなくもない。 (その差を埋めるくらいの応用力はあるらしい)-C#って何?C言語は分からないよ (実在する)-そもそもC#とVB.NETがどういう位置づけか知らないし、興味もない。-マイクロソフトが作る新しい言語なんてロクなもんじゃないと思ってる。 (彼らにとって2000年なんてのは「新しい」部類)
そんだけだと思う。ここに集う皆さんが常識ではじくものだけを使って食ってる人は意外にまだたくさん居るってこと。それが原因で破綻しかければ気づくのかも知れないけれど、なまじっか動く物が出来ちゃうから変わらない。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
192.168.0.1は、私が使っている IPアドレスですので勝手に使わないでください --- ある通りすがり
程度による (スコア:1)
VB.NETで文字数をカウントする処理を書かせたら、
1.配列に1文字ずつ文字を切り出して入れて
2.配列の内容をFor文で1文字ずつ読み出してループ回数を取得
3.ループ回数を結果として返す
みたいなのを書いてくるような組織(実話)に対しては、最初にガツンと釘を刺すという意味で有効だとおもいました。
あぁ、あと、同じくVB.NETでフラグ的な位置づけの変数をStringで宣言して「"True"」とか突っ込むようなチームとか。
#いずれも実話
Re:レベルアップが必要であることが明確であるときとレベルが不明な時には有効 (スコア:3, すばらしい洞察)
時間は掛かりますが、将来のことを考えるとレベルアップの一手段として有効だと思います
具体例がいろいろ挙がっていますが、
一般常識不足(いわゆるお約束、定石から外れている)
もっと簡単に記述できる(ライブラリにあるのに、等)
ラッパを何重にもかぶせていて実体に到達しない(不要だし、却ってわからない)
無駄に計算資源、メモリ資源を使いすぎ(それでもできるけど、意味ないし)
アルゴリズム的にダメ(経験・知識不足か、考えるのを放棄しているのか)
コンパイラで最適化が掛からない(神様がよろしくやってくれる訳ではない)
CPUの特性上遅い(キャッシュだとかレジスタの本数だとかを考えると無理がある)
読みにくい(美的センス?頭の構造がそうなのかも)
とかには効くのではないでしょうか?
Re:程度による (スコア:2, 参考になる)
>「"True"」
Cのソースでそゆの見た事ある。「condition == "true"」みたいに文字列へのポインタで比較してるの。
これ、ネットワーク界隈では結構名が売れてるブツな。
# 同じ文字列はリンカなりコンパイラなりがまとめてくれるけどさー。
Re:程度による (スコア:2)
自分も似たような状況でコードレビューしてて、とあるショートカットキーを押すと
例外吐いて落ちるイースターエッグが仕込まれているのを見つけたことがありますね。
Re: (スコア:0)
説明が足らないんじゃない?
文字のエンコード,OS,記述方向(左から右)に依存せず、制御コードを考慮した文字数カウント処理なら、1週間あっても足りないよ。
Re:程度による (スコア:1)
そこはライブラリを使うとこじゃね?
UNIX系ならwide characterとmultibyte characterの変換を知ってればいいだけだし、1分でかける。
むしろ0からそのコードを書こうとしたら止めるべきでしょ。
Windowsはしらないや。
Re: (スコア:0)
ICU使った方がいいかもしれんな。
Re: (スコア:0)
十分に優秀なプログラマーが1週間以上(かどうか知らんが)かけてそゆのをちゃんと考慮して実装してくれてんだし。
Re: (スコア:0)
でも、元コメントに
> VB.NETで文字数をカウントする処理を書かせたら、
って書いてあるんで、標準のlengthではだめなケースだったのではないかと。
そうでないんだったら、そんな指示を出した方がお馬鹿だったのでは?
Re: (スコア:0)
文字数に応じた処理なんていくらでもあるだろうよ。
そこでわざわざ lengthプロパティを使え とか書かないといけないとか
どんだけバカかと。
Re: (スコア:0)
文字数を使う処理じゃなくて、「文字数をカウントする処理」を書かせた、とかいてますが。
Re: (スコア:0)
Shift_JISの数え方? ISO-2022-JPの数えかた? UTF-8の数えかた? 半角全角の数え方?
全部同じと思ってるのかな? あほ?
Re: (スコア:0)
Re: (スコア:0)
プログラマには向いてなさそうだから転職をおすすめしますよ。
Re: (スコア:0)
で、問題あったの!?
基本的なスペック(要求時間や実行サイズ・動作確認)を満たしていれば、問題無いと思うけど。
要件として、上記のような手法はとらないと明記されていなければ、受け入れる側に
問題あり。<イチャモンや受け入れ側のスキル不足
上記の例では、もっとスマートに書けるのはわかるし、そうするべきであるのも分かるが、
やってはイケナイ手法とまでは思えない。(環境によってはそうするのがベターな場合もある<ループ)
コードレビューの意義って、本当は作成者の思い込みによるバグ混入(たまたま動いてた)って
ケースを見つけるためにあると思う。
<見る(指摘する)側が余程スキルが高くないと、ほとんどの場合見つからないのが問題。
<大概重箱の隅をつついて終了。(変数名がおかしいとか、マクロの宣言名が変とか)
Re: (スコア:0)
今ひとつわかりにくいので質問です。
VB.NETだったら文字列の長さは自分で処理書かなくても取得できますよね?
それも知らずに自分で処理を書いているような馬鹿ども、って意味でしょうか?
Re: (スコア:0)
まあ普通にそんなん標準関数で一発だろ的な処理内容なので、1文字ずつコピーしてくる
段階で数えればよくね?的な話として読んだんだが、
どっちにしろ、こんな阿呆な方法でやるな!とか書くくらいなら、どうするべきだったか
くらいは書いておくべきだよな。
Re: (スコア:0)
どうしてC#にしないんだろう。
Re:程度による (スコア:1, すばらしい洞察)
簡単な話、「以前から使っているVBと名が付いた方が安心だし、それで困っていないから、問題とも思わない」。
細かく言うなら
-大量に居るVB6軍団がVBとVB.NETはほぼ同じだといまだに思っている人が多い。
(実際、使い始めて「えらく違う」と驚く人をここ2年くらいで目撃してます)
-その上司も同様。Cと名が付く言語よりVBと付く方が簡単だと思っている。
-まぁ実際問題、VB6以前とほぼ同じに扱ってもそれっぽくできなくもない。
(その差を埋めるくらいの応用力はあるらしい)
-C#って何?C言語は分からないよ
(実在する)
-そもそもC#とVB.NETがどういう位置づけか知らないし、興味もない。
-マイクロソフトが作る新しい言語なんてロクなもんじゃないと思ってる。
(彼らにとって2000年なんてのは「新しい」部類)
そんだけだと思う。ここに集う皆さんが常識ではじくものだけを使って食ってる人は意外にまだたくさん居るってこと。
それが原因で破綻しかければ気づくのかも知れないけれど、なまじっか動く物が出来ちゃうから変わらない。
Re: (スコア:0)
俺は実際どっちでもいい。
だから顧客がVB.NETを指定するのを止めはしない。