ma2のblog - わんくま版(仮)

うどん、より、そば

目次

Blog 利用状況

ニュース

Xbox360ゲーマータグ

リンク

ブログ内検索

書庫

日記カテゴリ

カラwhileって使いますか?

VSS で管理しているのにソースの修正部分の差分をコメントとして残す(じゃんぬねっと日誌)を見て思い出したことがあります。

関数の中にreturnを複数書いてはいけない、というルールはよく見かけます。
拒絶反応を起こす人もよく見ます。自分もそうです。
インデントが深くなるのは見辛くて駄目だ。こんなのナシだ!! とルールに立ち向かう人がいました。
ここではレジスタンスと呼ぶことにします。
レジスタンスもたくさんいるわけですが、その中でも感動した方法は次のものです。

BOOL func( void )
{
  BOOL bRet = FALSE;

  while( 1 ){
    if( !test1() ){
      break;
    }
    if( !test2() ){
      break;
    }
    if( !test3() ){
      break;
    }
    if( !test4() ){
      break;
    }
    if( !test5() ){
      break;
    }
    testOKfunc();  // 条件を満たせばできる処理
    bRet = TRUE;
    break;
  }
  return bRet;
}

ガード句を使いながら、returnはひとつだけです。
このような書き方を "カラwhile" と呼んでいました。whileの最後でbreakする(=ループしない)からだと思います。
もちろん別の戦地ではこんな言葉通じません。

この方法が良いか悪いかの判断ができなかったのと、returnの代わりにbreakを書く習慣がなかった(書き忘れると怖い)ので自分は使いませんでしたが。

# やっと抱負に挙げた方面のネタが書けました

投稿日時 : 2008年6月5日 1:36

コメントを追加

# re: カラwhileって使いますか? 2008/06/05 1:57 尾画茶@やっぱり異端者だった

そうだったのですか……。return は1つにすべきだったのですか。
だから、サンプルコードなどでは、大抵そういう書き方にしてあったんですね。今、納得しました。
ずっと私は、「処理を抜けたい奴は、とっとと帰れ!」とreturn で追い払っていました。
でも、強制されるまで、レジスタンスでいたいな。

# re: カラwhileって使いますか? 2008/06/05 2:17 出水

禁止、禁止だけ言って推奨手段を提示しないから
こういうトリッキーで可読性に劣るコードが出来るんだと思います。
こんなことやるならgoto使ったほうがまだましです。

ソースの保守性を高めるのが目的なのに低くしてどうするのかと…
まともなコードもかけない人で手一杯なのに、
少なくともちゃんとしたコードを知っている人まで敵に回したら
どうにもならないと思うんですね

# re: カラwhileって使いますか? 2008/06/05 8:02 あんどちん

こういうときは、do~while(0)を使うな。
どっちにしても読みにくくなることに変わりはないけど。

# re: カラwhileって使いますか? 2008/06/05 8:30 st.lain

Blogに別途書こうかと思いましたが、書かれたので
コメント便乗しちゃいます。(w

# そもそもガード句ということ自体を知らなかったので
# 論点がズレてるカモしれません。

try~catchで自らスローして自らキャッチとか、
出来ないのカナ。
(例外使い方知らないので、これを気に勉強しなきゃ・・)

私的に、whileのような繰り返しを「主」目的とした構文で
あるにも関わらず1度しかさせないようにしたような、
相反する部分がちょっと気にかかります。

> 書き忘れると怖い
やはり、私はこれに尽きると思います。

> 関数の中にreturnを複数書いてはいけない、というルール
VB系ってon error gotoを使えば当然(?)、Exit Sub
なりExit Functionが出てくると思うのですが、ある意味、
複数returnを行ってるのと(広義で)同義な気がします。

そゆのは大丈夫なのカナ・・・とか思ったりするところです。

# re: カラwhileって使いますか? 2008/06/05 8:34 st.lain

書いてから思ったこと。自分のカキコの

> VB系って
の話は無かったことに・・・。比較土台として不適切な
ように思えてきました。 orz

# re: カラwhileって使いますか? 2008/06/05 9:13 Hirotow

はじめこれ見たとき意味不明で、
教えてもらったとき軽く感動しました。
ちなみにうちはwhile-true-breakよりdo-while-falseのほうが多いかも。

# re: カラwhileって使いますか? 2008/06/05 9:14 Hirotow

default:
return;
で異常引数な処理をスキップできるのに。

# re: カラwhileって使いますか? 2008/06/05 9:18 じゃんぬねっと

昔の VB には continue がなかったので空の Do ~ While で代用しているソースなんてありますね。
素直に GoTo Continue と書いた方がわかりやすい。

# re: カラwhileって使いますか? 2008/06/05 9:24 じゃんぬねっと

> try~catchで自らスローして自らキャッチとか、
> 出来ないのカナ。
コストが高く挙動にさえ関わるので使ってはいけません。

> 私的に、whileのような繰り返しを「主」目的とした構文で
> あるにも関わらず1度しかさせないようにしたような、
> 相反する部分がちょっと気にかかります。
条件によっては 1 回で済むので回数の問題というよりは、"ブロックを作りたい" という目的に違和感を感じるのだと思います。

> VB系ってon error gotoを使えば当然(?)、Exit Sub
> なりExit Functionが出てくると思うのですが、ある意味、
> 複数returnを行ってるのと(広義で)同義な気がします。
> そゆのは大丈夫なのカナ・・・とか思ったりするところです。
VB の Exit Sub, Exit Function は、戻り値を返さない return に相当します (Exit Sub はモロにそうだし、Exit Function も戻り値をその前に別途格納しているので同じです) からルールがあるならやってはいけないことになります。

# re: カラwhileって使いますか? 2008/06/05 9:34 st.lain

> コストが高く
そっか、そうですよね・・・。コストは考えていませんでした orz

# re: カラwhileって使いますか? 2008/06/05 10:23 ぽぴ王子

最初に手がけた Delphi のプロジェクトで多用されていました。
実際のところ自分ではなくリーダーが発案者だったです。

気持ちはわかるし、使うこともやぶさかではありません。
(可読性というのを抜きにすれば)

でも今はなんとなく使ってないんですよね。なんでだろ。
それが必要な場面がないからだと思います。単についてるだけかも。
もしもそういった場面になったら、goto とどちらを使うかと
考えると、やはり while にしてしまいそうです。
あ、でもやるとしたらキッチリコメント書きますね。
(逆にコメントを書くということは可読性が低いということでもあるわけですが)

これに関しては、自分の中での正解はまだ出せていない状況です。
どうも無意識のうちにこのパターンを避けているような気がします。

# re: カラwhileって使いますか? 2008/06/05 12:18 渋木宏明(ひどり)

ループ脱出と関数からの戻りの「あるべき」論がごっちゃになってる希ガス。

メソッド内での return の濫用は、「必要な終了処理が行われないままメソッドから抜けてしまう」可能性があるので、好きではありません>じぶん

じゃあ goto 使えばいいじゃんて話もありますが、宗教上の理由からそれも避けています>じぶん

ですが、C# では try ~ finally が使えるので、宗教上の禁忌を冒してまで goto を使うべきか?と悩むことはなくなりました。

# [.NET]おっさんホイホイとしての Code Complete と,近くにあっても気付かない guard 句の話 2008/06/05 13:50 NyaRuRuの日記

VSS で管理しているのにソースの修正部分の差分をコメントとして残す - じゃんぬねっと日誌 カラwhileって使いますか? - ma2のblog - わんくま版(仮) 正常系が先か異常系が先かという問題 - Hirotow’s Craftive Blogs ガード句かぁ,じゃんぬねっとさんは『Code Complete

# [C++]日本ブレイクコード 2008/06/05 19:53 Garbage Collection

[C++]日本ブレイクコード

# リターンは一度だけ 2008/06/05 22:12 組み込まれない組み込み屋

リターンは一度だけ

# re: カラwhileって使いますか? 2008/06/06 0:58 ma2

こんなにコメントがつくとは。
申し訳ないですが、ポイントを絞ってレスします。

> そうだったのですか
いくつもあるポリシーの内のひとつなので、ガード句で止めるやり方がダメというわけではないと思います。

> 推奨手段
確かに代替するパターンって見かけないですね。

> 例外
いろいろあって例外を使わなかったり(理解できてる人員の都合)、使えなかったり(純粋なC言語とか)するのです。
# 「私個人が使ってみたところ、意味側からなったので」って理由で例外の使用を禁止してるところもありました(前置きとして規約書に書いてあった)

> gotoとwhile
> 宗教上の理由
gotoの4文字で何人の血が流れることか・・・。使いたくないですよね。わかります。

> do-while-false
あれ? ミスが防げるのにうれしくない。なんでだろう。

# qn2oef4c 2019/02/14 6:26 Aaronunwit

http://prednisolone.icu/ - prednisolone

# sab4kboj 2019/02/15 6:23 Aaronunwit

http://xenical.icu/ - orlistat 120mg

# crukn35j 2019/02/21 3:36 Aaronunwit

http://phenergan.icu/ - buy phenergan online

# jynnest1 2019/02/24 1:31 Aaronunwit

http://ventolin.guru/ - ventolin

# t4o15mu3 2019/02/25 1:29 Aaronunwit

http://sildenafil24h.us.org/ - Sildenafil 100mg

# Hi there, I enjoy reading through your article. I wanted to write a little comment to support you. 2019/05/28 20:23 Hi there, I enjoy reading through your article. I

Hi there, I enjoy reading through your article. I wanted to write a little comment to
support you.

# Hey there would you mind sharing which blog platform you're using? I'm looking to start my own blog in the near future but I'm having a hard time selecting between BlogEngine/Wordpress/B2evolution and Drupal. The reason I ask is because your layout seem 2019/05/31 0:40 Hey there would you mind sharing which blog platfo

Hey there would you mind sharing which blog platform you're using?
I'm looking to start my own blog in the near future
but I'm having a hard time selecting between BlogEngine/Wordpress/B2evolution and Drupal.
The reason I ask is because your layout seems different then most blogs and I'm looking for
something unique. P.S Apologies for getting off-topic but I
had to ask!

# I will right away grab your rss feed as I can't to find your e-mail subscription link or newsletter service. Do you've any? Please let me recognise in order that I could subscribe. Thanks. 2019/06/07 1:35 I will right away grab your rss feed as I can't to

I will right away grab your rss feed as I can't to find your e-mail subscription link
or newsletter service. Do you've any? Please let me recognise in order that I could subscribe.
Thanks.

# Hello, the whole thing is going fine here and ofcourse every one is sharing facts, that's genuinely fine, keep up writing. 2019/07/31 5:08 Hello, the whole thing is going fine here and ofco

Hello, the whole thing is going fine here and ofcourse every one is sharing facts, that's genuinely fine,
keep up writing.

# Hello, the whole thing is going fine here and ofcourse every one is sharing facts, that's genuinely fine, keep up writing. 2019/07/31 5:09 Hello, the whole thing is going fine here and ofco

Hello, the whole thing is going fine here and ofcourse every one is sharing facts, that's genuinely fine,
keep up writing.

# Hello, the whole thing is going fine here and ofcourse every one is sharing facts, that's genuinely fine, keep up writing. 2019/07/31 5:10 Hello, the whole thing is going fine here and ofco

Hello, the whole thing is going fine here and ofcourse every one is sharing facts, that's genuinely fine,
keep up writing.

# Hello, the whole thing is going fine here and ofcourse every one is sharing facts, that's genuinely fine, keep up writing. 2019/07/31 5:11 Hello, the whole thing is going fine here and ofco

Hello, the whole thing is going fine here and ofcourse every one is sharing facts, that's genuinely fine,
keep up writing.

# I like what you guys are up too. This kind of clever work and reporting! Keep up the terrific works guys I've added you guys to my own blogroll. natalielise pof 2019/08/01 11:17 I like what you guys are up too. This kind of clev

I like what you guys are up too. This kind of clever
work and reporting! Keep up the terrific works guys I've added
you guys to my own blogroll. natalielise pof

# re: ??while???????? 2021/08/08 14:19 hydroxychloroquine sulfate 200 mg oral tablet

cloroquin https://chloroquineorigin.com/# hydroxychlorquine

# Wow! Finally I got a blog from where I can truly get valuable facts concerning my study and knowledge. 2021/08/29 1:25 Wow! Finally I got a blog from where I can truly g

Wow! Finally I got a blog from where I can truly get valuable facts concerning my study and knowledge.

# I visit each day some sites and information sites to read posts, except this web site provides quality based posts. 2021/08/31 19:20 I visit each day some sites and information sites

I visit each day some sites and information sites to read
posts, except this web site provides quality based posts.

# If you desire to increase your familiarity just keep visiting this web page and be updated with the hottest gossip posted here. 2021/09/02 6:44 If you desire to increase your familiarity just ke

If you desire to increase your familiarity just keep visiting this web page and be updated with the hottest gossip posted here.

# If you desire to increase your familiarity just keep visiting this web page and be updated with the hottest gossip posted here. 2021/09/02 6:45 If you desire to increase your familiarity just ke

If you desire to increase your familiarity just keep visiting this web page and be updated with the hottest gossip posted here.

# If you desire to increase your familiarity just keep visiting this web page and be updated with the hottest gossip posted here. 2021/09/02 6:46 If you desire to increase your familiarity just ke

If you desire to increase your familiarity just keep visiting this web page and be updated with the hottest gossip posted here.

# If you desire to increase your familiarity just keep visiting this web page and be updated with the hottest gossip posted here. 2021/09/02 6:47 If you desire to increase your familiarity just ke

If you desire to increase your familiarity just keep visiting this web page and be updated with the hottest gossip posted here.

# I think the admin of this website is truly working hard in favor of his website, as here every information is quality based stuff. 2021/09/05 0:00 I think the admin of this website is truly working

I think the admin of this website is truly working hard in favor of his website, as
here every information is quality based stuff.

# If you desire to get much from this article then you have to apply such techniques to your won blog. quest bars https://www.iherb.com/search?kw=quest%20bars quest bars 2021/09/12 11:50 If you desire to get much from this article then y

If you desire to get much from this article then you have to
apply such techniques to your won blog. quest bars https://www.iherb.com/search?kw=quest%20bars quest bars

# My relatives always say that I am wasting my time here at net, except I know I am getting familiarity daily by reading such good content. 2022/01/02 4:54 My relatives always say that I am wasting my time

My relatives always say that I am wasting my time here
at net, except I know I am getting familiarity daily
by reading such good content.

# This post is actually a pleasant one it helps new internet people, who are wishing in favor of blogging. 2022/11/28 5:32 This post is actually a pleasant one it helps new

This post is actually a pleasant one it helps new internet people, who are wishing in favor of blogging.

# Test, just a test 2022/12/13 0:05 www.candipharm.com

canadian pills online https://www.candipharm.com

# meet women online 2023/08/09 20:40 WayneGurry

meet girls for free: http://datingtopreview.com/# - dating sites for seniors

# buy cytotec pills online cheap 2023/08/25 17:36 Georgejep

http://avodart.pro/# can i get generic avodart price

# farmacie online autorizzate elenco 2023/09/24 18:04 Archieonelf

https://farmaciaonline.men/# farmacie online sicure

# farmacia online miglior prezzo 2023/09/25 17:14 Archieonelf

http://farmaciabarata.pro/# farmacia online barata

# versandapotheke 2023/09/26 13:05 Williamreomo

http://onlineapotheke.tech/# versandapotheke deutschland
п»?online apotheke

# internet apotheke 2023/09/26 23:35 Williamreomo

https://onlineapotheke.tech/# п»?online apotheke
online apotheke gГ?nstig

# online apotheke deutschland 2023/09/27 4:43 Williamreomo

https://onlineapotheke.tech/# online apotheke versandkostenfrei
versandapotheke

# п»їonline apotheke 2023/09/27 8:29 Williamreomo

http://onlineapotheke.tech/# online apotheke versandkostenfrei
versandapotheke

# п»їonline apotheke 2023/09/27 10:56 Williamreomo

https://onlineapotheke.tech/# online apotheke deutschland
versandapotheke

# online apotheke gГјnstig 2023/09/27 17:47 Terrywef

acheter sildenafil 100mg sans ordonnance

# acquisto farmaci con ricetta 2023/09/27 22:02 Rickeyrof

acheter sildenafil 100mg sans ordonnance

# ed pills that really work https://edpillsotc.store/# - buy ed pills online 2023/10/08 5:05 EdPills

ed pills that really work https://edpillsotc.store/# - buy ed pills online

# male ed pills 2023/10/08 8:29 BobbyAtobe

They provide valuable advice on international drug interactions. http://edpillsotc.store/# buy ed pills

# cheap erectile dysfunction pills online 2023/10/09 8:40 BobbyAtobe

Their private consultation rooms are a great addition. https://doxycyclineotc.store/# average cost of doxycycline

# online-rx 2023/10/16 22:23 Dannyhealm

Their global reach is unmatched. https://mexicanpharmonline.shop/# mexican pharmaceuticals online

# buy prescription online 2023/10/16 23:33 Dannyhealm

Their commitment to global patient welfare is commendable. http://mexicanpharmonline.com/# mexico drug stores pharmacies

# canadian drug store 2023/10/17 5:30 Dannyhealm

I value their commitment to customer health. https://mexicanpharmonline.shop/# pharmacies in mexico that ship to usa

# mexican pharmacies that ship to usa 2023/10/17 13:26 Dannyhealm

Trustworthy and efficient with every international delivery. http://mexicanpharmonline.com/# mexican border pharmacies shipping to usa

# order prescription from canada 2023/10/17 17:56 Dannyhealm

Their 24/7 support line is super helpful. http://mexicanpharmonline.com/# mexican border pharmacies shipping to usa

# canadian pharmacie 2023/10/17 18:30 Dannyhealm

They maintain a high standard of hygiene and cleanliness. https://mexicanpharmonline.shop/# mexico drug stores pharmacies

# prescription online canada 2023/10/18 3:35 Dannyhealm

Their compounding services are impeccable. http://mexicanpharmonline.com/# mexico drug stores pharmacies

# canadian mail order pharmacies 2023/10/18 7:36 Dannyhealm

The widest range of international brands under one roof. http://mexicanpharmonline.shop/# mexican border pharmacies shipping to usa

# Cost of Plavix on Medicare https://plavix.guru/ Clopidogrel 75 MG price 2023/10/24 3:39 Plavixxx

Cost of Plavix on Medicare https://plavix.guru/ Clopidogrel 75 MG price

# п»їpaxlovid 2023/10/24 10:44 LarryNef

http://paxlovid.bid/# paxlovid india

# Paxlovid buy online https://paxlovid.bid/ paxlovid covid 2023/10/26 2:49 Paxlovid

Paxlovid buy online https://paxlovid.bid/ paxlovid covid

# best over the counter ed pills 2023/11/21 6:42 WilliamApomb

http://sildenafil.win/# sildenafil fast shipping

# natural ed medications 2023/11/22 18:41 WilliamApomb

http://sildenafil.win/# buying sildenafil in mexico

# ï»¿farmacia online migliore https://farmaciait.pro/ farmacia online senza ricetta 2023/12/04 12:59 Farmacia

farmacia online migliore https://farmaciait.pro/ farmacia online senza ricetta

# African Media Pin spot: Stay Informed on Celebrities & Trends! 2024/03/26 14:33 Jackieles

In our online leaflet, we exert oneself to be your reliable source for the latest scuttlebutt about media personalities in Africa. We reimburse one of a kind prominence to promptly covering the most applicable events with regard to well-known figures on this continent.

Africa is fecund in in talents and solitary voices that contours the cultural and collective landscape of the continent. We convergence not just on celebrities and showbiz stars but also on those who make consequential contributions in numerous fields, be it adroitness, civil affairs, body of knowledge, or philanthropy https://afriquestories.com/coupes-de-cheveux-afro-pour-hommes/

Our articles equip readers with a sweeping overview of what is incident in the lives of media personalities in Africa: from the latest dirt and events to analyzing their clout on society. We keep run to earth of actors, musicians, politicians, athletes, and other celebrities to demand you with the freshest information firsthand.

Whether it's an choice examine with a revered celeb, an investigation into scandalous events, or a look at of the latest trends in the African showbiz humanity, we utmost to be your pre-eminent authority of news yon media personalities in Africa. Subscribe to our publication to hamper conversant with around the hottest events and exciting stories from this captivating continent.

# UK Front-page news Nucleus: Arrest Informed on Politics, Succinctness, Learning & More 2024/03/29 11:44 Tommiemayox

Salutation to our dedicated stand in return staying briefed round the latest intelligence from the Collective Kingdom. We take cognizance of the rank of being learned upon the happenings in the UK, whether you're a resident, an expatriate, or unaffectedly interested in British affairs. Our exhaustive coverage spans across various domains including political science, concision, education, production, sports, and more.

In the jurisdiction of wirepulling, we support you updated on the intricacies of Westminster, covering ordered debates, superintendence policies, and the ever-evolving landscape of British politics. From Brexit negotiations and their burden on trade and immigration to native policies affecting healthcare, drilling, and the atmosphere, we provide insightful analysis and propitious updates to stop you nautical con the complex world of British governance - https://newstopukcom.com/tradevision365-review-tradevision365-com-is/.

Economic news is required in search adroitness the fiscal pulsation of the nation. Our coverage includes reports on market trends, charge developments, and budgetary indicators, donation valuable insights in behalf of investors, entrepreneurs, and consumers alike. Whether it's the latest GDP figures, unemployment rates, or corporate mergers and acquisitions, we strive to hand over precise and akin intelligence to our readers.

# order cytotec online https://cytotec.club/ purchase cytotec 2024/04/28 2:10 Cytotec

order cytotec online https://cytotec.club/ purchase cytotec

タイトル
名前
URL
コメント