こちらのサイトの記事を読みまして
「14. 複雑な内部状態を定義しない」のところに
現代的な高級言語を使う状況でそもそもいわゆる「フラグ」を利用するケースなど殆ど無いと言える。
と書いてあるのですが高級言語でフラグを使わない具体的な方法を教えてほしいです。
現在rubyを使っているので出来ればrubyかpythonでお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
ベストアンサー
「フラグを使わない具体的な方法」については、「Stateパターン」を参照してください。
ちなみに、ここで話題にしているフラグ(Bool型の変数)は、関数やメソッド内のローカル変数ではなく、オブジェクト指向におけるクラスのインスタンス変数についての話です。これは、forやwhileなどのロジックを制御するのとは別の話です。
投稿2015/07/10 14:22
総合スコア2183
0
この記事の人がどういう立場の人なのか分かりませんが、書いてある半分は正しいですが、半分は宗教の世界です。
この人の言う”高級言語”の定義が分かりませんが、高級だろうが低級(アセンブラ等)だろうが、ロジックはロジックです。
実践的なコードでフラグ(=BOOL値を保持する変数)を使わない、というロジックは基本的にありえません。
コードの基本は、「他人が読んで内容が把握できるようにする」「冗長にしない(これは記事でも書いてあります)」です。
それは変数名の付け方やコメントの付け方なども含みます。
for文を使うプログラマーをダメと言って悦に入る人の言うことを真に受けない方が良いです。
全部eachを使えば良いと考えている人の方がダメだと思います。
投稿2015/07/09 12:59
総合スコア358
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/09 13:37
2015/07/09 22:50
2015/07/10 14:09
2015/07/10 14:42 編集
2015/07/10 15:04
0
他にも例があるとおもいますが、”複数クラスを一つのオブジェクトとして表現’している例として次のようなものはどうでしょうか。
PersonクラスにはPriveteな変数Sexがある。
Personクラスの各メソッドには、if Sex == Female ... のような条件分岐がたくさんある。
Sexがとり得る値に”性別不明”などを追加した場合は、上記のすべてのメソッドに渡る。
であるなならば、状態変数のSexを廃止して、PersonのサブクラスMaleとサブクラスFemaleを追加したほうがコードがスッキリするよってことじゃないかと思う。
現代的な高級言語の指す意味は、継承を出来るオブジェクト指向言語や関数渡しが出来る言語(さらにはmixinが使える言語?)といった意味だと考えられます。
投稿2015/07/11 15:52
総合スコア2883
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/12 00:47
2015/07/12 02:14
2015/07/12 04:27
2015/07/12 05:33
2015/07/12 14:17
2015/07/12 14:51
2015/07/12 15:07
2015/07/12 15:23
2015/07/12 15:56
0
題材として、フラグを使ったプログラムを提示してください。
投稿2015/07/09 12:49
総合スコア84533
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/09 13:01
2015/07/09 13:08
2015/07/09 13:44
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/10 22:56