秀丸エディタスレ Part27

このエントリーをはてなブックマークに追加
952名無しさん@お腹いっぱい。:2010/02/20(土) 02:18:25 ID:1Cnf+ioNP
そりゃ出来るに決まってるだろ・・・
switch文欲しいっていう奴は当然それを知った上で「欲しい」と言ってるわけよ
何でこんなにレベル低くなったんだ?
953名無しさん@お腹いっぱい。:2010/02/20(土) 02:41:36 ID:qXH+a7xn0
954名無しさん@お腹いっぱい。:2010/02/20(土) 03:34:20 ID:1Cnf+ioNP
switchで「簡単に」出来る事をif〜elseで「複雑に」なってもいいのなら
そりゃ出来るに決まってるだろ・・・
switch文欲しいっていう奴は当然それを知った上で「欲しい」と言ってるわけよ
処理を簡潔に記述できたほうが生産性が高まるからね

if 〜 elseではswitchのように処理を簡潔に記述する事は実現できないというのに
こういう馬鹿は何を考えて>>947のようなレスをするのだろうか。

ここまで噛み砕いて書いてあげても理解できないのかな?
955名無しさん@お腹いっぱい。:2010/02/20(土) 03:36:37 ID:BTMwWLqI0
そんな熱くなるなよ
出来ないと言っちゃったからって
956名無しさん@お腹いっぱい。:2010/02/20(土) 04:18:50 ID:wX1joi+10
>>954
>if 〜 elseではswitchのように処理を簡潔に記述する事は実現できないというのに

>>947
>多少は楽になるんじぇね?
957名無しさん@お腹いっぱい。:2010/02/20(土) 06:30:58 ID:rYP6P2Pm0
Pythonのように、比較的メジャーな言語でもswitch構文を採用していないものもある。
まあPythonはswitch-caseを採用したところでタイプ量も見た目もelifとほとんど同じになってしまうから需要がないんだが。

生産性を気にするならスコープの概念がほぼないとか、execmacroの貧弱さとか
もっと重要な問題はたくさんあるのにswitchごときで何を大げさな、と俺は思う。
正直なくてもかまわん。
958名無しさん@お腹いっぱい。:2010/02/20(土) 06:39:33 ID:bHPuFwAY0
ID:1Cnf+ioNPの後出し言い訳わろたw
最初に大きく出ちゃって引くに引けなくなった奴の末路だな
>>956が正解
959名無しさん@お腹いっぱい。:2010/02/20(土) 09:05:22 ID:bAoqpqEf0
論点が違ってるだけじゃん
switch (条件) {
 case 条件a: // 1
 case 条件b: // 1
 case 条件c: // 1
  処理1;
  break;
 case 条件d: // 2,3,4
  処理2;
 case 条件e: // 3,4
  処理3;
 case 条件f: // 4
  処理4;
  break;
 default:   // 5
  処理5;
}
switchが欲しいって事は処理1,5はいいとして2,3,4あたりを楽したいんだろう?
条件を書き並べるのでは少しも楽にならないって話
俺だけが正解かなw
960名無しさん@お腹いっぱい。:2010/02/20(土) 09:55:23 ID:9xr3EdcL0
楽云々じゃなく視認性だろ
記述の手間なんてたいしたこっちゃない
961名無しさん@お腹いっぱい。:2010/02/20(土) 10:01:27 ID:rYP6P2Pm0
>>959
わざわざCのDirtyな仕様を持ち出すか…
その2,3,4の記法は処理の流れを把握しにくくバグを誘発しやすいので、今ではあまり行儀のよくないものとされている。
ダメってわけでもないけど、少なくとも1Cnf+ioNPのように生産性や保守性を重視したいならそれを理由として持ち出すはずがない。
962名無しさん@お腹いっぱい。:2010/02/20(土) 10:29:15 ID:UPGoPOF90
>>954
他人をバカにして間違ったこと書いたにもかかわらず、
理解出来ないのは他人の頭が悪いせいだと開き直っちゃったんだなw

人間慣れしてないとしか思えないw
963名無しさん@お腹いっぱい。:2010/02/20(土) 10:36:13 ID:R6PZEUYDP
互換性無しの全く別のマクロを実装して欲しい
basic系はもういやずら…
964名無しさん@お腹いっぱい。:2010/02/20(土) 10:45:34 ID:1Cnf+ioNP
いや、生産性や保守性を上げるいい例が>>959なのでは?
if〜elseでやろうとすると処理2を何度も書く必要が出てくる。
ifだけ並べて処理させるにしても条件が複雑になる。

可視性を上げ、かつメンテナンスを考えればswitchは有用と思うしかない。
でなければswitchなんて使う必要なんてないだろ。

そう考えなければ>>937みたいな奴が定期的に出てくるのは説明出来ない
965名無しさん@お腹いっぱい。:2010/02/20(土) 10:52:58 ID:NEV9rsCG0
もう良いだろ
そんな欲しいなら直接要望出せよ
966名無しさん@お腹いっぱい。:2010/02/20(土) 10:57:25 ID:zdeGujFM0
>>959のswichの例はひどすぎ。

switchを使うときは、
基本的に必ずbreakは入れましょう。
入れない場合はコメントに"意図的にbreakを入れていない"ことを明記しましょう
defaultは必ず入れましょう。
967名無しさん@お腹いっぱい。:2010/02/20(土) 10:59:27 ID:+AP7RaFh0
>964
if文で正規表現が使えればいいだけだよね。

if (x ~= /1|2|3/) then
ほげ1
elseif (x ~= /4/) then
ほげ2
else
ほげ3
end
968名無しさん@お腹いっぱい。:2010/02/20(土) 11:04:14 ID:bHPuFwAY0
>>964
おいおいまだ自分の間違いを認めてなかったのかよw
>>937みたいなのが存在するのはすでにswitchが
自分のコーディングスタイルに取り込まれてるからであって
客観的に評価してるしてるわけじゃない。
俺はPerlを使いたいとかいうのと同じ次元の話だ。
たとえバッドノウハウでもそれに染まりきってしまって抜け出せない人間はたくさんいる。
969名無しさん@お腹いっぱい。:2010/02/20(土) 11:05:36 ID:+AP7RaFh0
>959
あと、この処理系に文句を言っている人が多いが、
問題は、いかに理解しやすく簡潔なコードを書くかであって、
いかに規則的か、いかに美しいかは問題じゃないんだぞ?
特に、全部のcaseを分けて書くっていってるやつ、何回同じ事を書くつもりだ?

てことで、現場ではよく、>959のようなコーディングがされる。
主にi/oエラー系でね。

case 条件 i/o_erro1 i/o_error2 i/o_error3
  処理2;
case 条件 i/o_erro4 i/o_error5
  処理3;

以上の構文を修正する際にバグらせてしまうやつは、
むしろプログラミングできないやつだ。
970名無しさん@お腹いっぱい。:2010/02/20(土) 11:07:36 ID:NEV9rsCG0
なんだか知らないが
おまえらただ語りたいんだな
971名無しさん@お腹いっぱい。:2010/02/20(土) 11:07:55 ID:onmc2BCF0
レスが伸びてるのにswitch文否定派のレスが単発IDの件
972名無しさん@お腹いっぱい。:2010/02/20(土) 11:12:19 ID:gMqknS350
条件が100ある場合ifは最悪1から100まで判断するがswitchはそんなに判断しない
そりゃifでもswitchでも同じものが出来るが処理が違うんだよ
switch使ったこと無いんだろうなきっと
973名無しさん@お腹いっぱい。:2010/02/20(土) 11:15:49 ID:nQzWXjZG0
>>969
働いたことないの?
自分一人で一生メンテするなら好きにすればいいんだけど
いろんなレベルの人が関わるんだよ?

>以上の構文を修正する際にバグらせてしまうやつは、
>むしろプログラミングできないやつだ。
趣味のPGレベルの発言
974名無しさん@お腹いっぱい。:2010/02/20(土) 11:20:52 ID:UPGoPOF90
>>972
>条件が100ある場合ifは最悪1から100まで判断するがswitchはそんなに判断しない
ちょっとそれサンプルコード書いてみてよw
975名無しさん@お腹いっぱい。:2010/02/20(土) 11:38:01 ID:Igr8MEiE0
マクロスレ作ってそこでやれ
976名無しさん@お腹いっぱい。:2010/02/20(土) 11:42:05 ID:MX01NsRp0
早瀬大尉か
懐かしいな
977名無しさん@お腹いっぱい。:2010/02/20(土) 11:44:52 ID:gMqknS350
ここはPerlしか使ったことが無い初心者が多そうなインターネッツですね
978名無しさん@お腹いっぱい。:2010/02/20(土) 11:52:33 ID:UPGoPOF90
>>977
初心者でいいから、
>条件が100ある場合ifは最悪1から100まで判断するがswitchはそんなに判断しない
これのサンプルコード書いてみてよw
979名無しさん@お腹いっぱい。:2010/02/20(土) 11:57:51 ID:gMqknS350
>>978
俺は書き方の話をしてねーよ
おめーが書き方が分からないならググれ
ttp://chaichan.web.infoseek.co.jp/src/javasc04.htm
980名無しさん@お腹いっぱい。:2010/02/20(土) 11:59:01 ID:3mk9O9B10
ifは線形探索だけどswitchはジャンプテーブルで分岐って話でねーの。
981名無しさん@お腹いっぱい。:2010/02/20(土) 12:12:23 ID:rYP6P2Pm0
>>980
コンパイラならまだそういう理由もないわけではないが、これはインタプリンタの話だから。
982名無しさん@お腹いっぱい。:2010/02/20(土) 12:20:45 ID:c7HX+GkE0
×インタプリンタ
○インタプリタ
983名無しさん@お腹いっぱい。:2010/02/20(土) 12:43:42 ID:jldb/DOaP
984名無しさん@お腹いっぱい。:2010/02/20(土) 12:52:43 ID:+AP7RaFh0
>973
でもさ、このスレの人間でも、あのswich文を理解できてるじゃん。
大多数の人間が見てすぐに理解できるのであれば、
それが規則に従っていようといまいと、正しいコードだと思うよ。

まあ、書き方はいいとして、
条件式の正規表現に対応してくれればいいだけなんだけどな。
985名無しさん@お腹いっぱい。:2010/02/20(土) 12:53:41 ID:alhxfZgW0
mikoscriptを見習ってマクロは外部実行ファイルにするべき
986名無しさん@お腹いっぱい。:2010/02/20(土) 13:22:04 ID:pWJ2KkdA0
次スレへswitchヽ(´ー`)ノ
987名無しさん@お腹いっぱい。:2010/02/20(土) 13:51:10 ID:9xr3EdcL0
>>984
理解できるも何も959には解説書いてあるし。
実際のソースでは、break入れ忘れのバグなのか意図的なのか
一見しただけで分からなくなる。966の言うようにコメント徹底してるならともかく

動きゃいいってんならどう記述しようが正しいコードってことになるが
そういう話してるんじゃないじゃん
988名無しさん@お腹いっぱい。:2010/02/20(土) 15:43:58 ID:qXH+a7xn0
まだswitchが続いていたw

ちなみに>>959ってC#じゃ動かないね。
コンパイラにはbreakを書き忘れたのか
次のcaseを評価するのが意図した設計なのか判断出来ない。
潜在的なバグの可能性もあるので、コンパイルを通さずにエラーにしちゃってる。

switch(i){
case 1:
case 2:
case 3:
 処理;
 goto case 4;
case 4:
 処理;
 break;
default
 処理;
 break;
}
989名無しさん@お腹いっぱい。:2010/02/20(土) 16:24:45 ID:4XEkyL+O0
複雑な処理をするならPerlなりsedなりでスクリプト組んだ方が早いわな。
990名無しさん@お腹いっぱい。:2010/02/20(土) 16:29:01 ID:okp+e/g30
β43でもmoveto2がカラー表示されない
991名無しさん@お腹いっぱい。:2010/02/20(土) 17:52:50 ID:6HAOTLSm0
992名無しさん@お腹いっぱい。:2010/02/20(土) 18:28:53 ID:4GG4ZUXv0
え?なにお前等
秀丸マクロ極めて、秀丸を超えるエディタでも作ろうってか
それは無理な話だよポイズン
993名無しさん@お腹いっぱい。:2010/02/20(土) 21:03:46 ID:+AP7RaFh0
>987
すまん、>959が言いたいのは、以下みたいに条件2,3,4をまとめられるといいたいだけだぞ?
どこにbreakを入れ忘れられるんだ?

 case 条件d: // 2,3,4
  処理2;
994名無しさん@お腹いっぱい。:2010/02/20(土) 21:16:53 ID:rYP6P2Pm0
>>993
よく見ろ。「条件は d は処理2,3,4を実行する」という意味だぞ。
条件 e の前に break; がないのは意図的だと示すためにわざわざ // 2,3,4 とコメントを書いている。

>でもさ、このスレの人間でも、あのswich文を理解できてるじゃん。
と書いておいて自爆すんなよww
995名無しさん@お腹いっぱい。:2010/02/20(土) 21:26:37 ID:GSwksEr80
個人的にはCのswitchよりVBのSelectの方が好きだ。

>>995
> 条件 e の前に break; がないのは意図的だと示すためにわざわざ // 2,3,4 とコメントを書いている。

それだったら、// 2,3,4 なんて書かずに //FALLTHROUGH って書いてくれた方が
意図が伝わりやすいと思う。
996名無しさん@お腹いっぱい。:2010/02/20(土) 21:30:12 ID:9xr3EdcL0
なんだ、前提からしてわかってなかったのかw
>>993
もしかして VBの Select Case あたりと混同してる?
997名無しさん@お腹いっぱい。:2010/02/20(土) 21:36:37 ID:c1oJdzw30
今時フォールスルー論争かい!
ダフのデバイス辺りで決着がついてるというのに。(結論:よくわからない)

個人的にはほとんど使わないなぁ。
理由は、コメント無いと意図してるのか書き忘れかわかりづらいのと、
>>959みたいにきっちりコメント残しても >>993みたいに勘違いする奴が
出てくるから。

フールプルーフの観点からも言語仕様で使えなくしてるVBの方がこの点に関しては好み。
Javaはなんでフォールスルーにしたんだろうねぇ。

※まぁ使いようなのはgotoと同じだけどね…
998名無しさん@お腹いっぱい。:2010/02/20(土) 21:53:33 ID:rYP6P2Pm0
>>995
俺は説明してるだけで>>959書いたのは別人なので俺に言われても…

あと「//FALLTHROUGH って書いてくれた方が…」には賛成できない。
それだと break; 抜いてるのが意図的だと伝わっても、どこでswitchを抜けることを意図してるのかがわからなくなる。
999名無しさん@お腹いっぱい。:2010/02/20(土) 21:56:28 ID:1Cnf+ioNP
============ここまで俺の自作自演でした============
1000名無しさん@お腹いっぱい。:2010/02/20(土) 21:57:08 ID:1Cnf+ioNP
今日はよく釣れたナ♪
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。