じゃんぬのどっとてきすと

雑記とネタと時々プログラミング

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  982  : 記事  4  : コメント  16093  : トラックバック  277

ニュース

My Website

初心者向けのサイトです。

C# と VB.NET の入門サイト

最近のできごと

少し前に女のコが生まれました。家事と育児と仕事にと奮起しています。めちゃくちゃかわいいです。あと Blog の更新は全然してませんが、Twitter とかでアホなこと呟いています。見つけることができたら、ぜひフォローしてあげてください。けっこう喜びます。

Sponsored Link1

Sponsored Link2

Archive

書庫

このような質問が後を絶ちません...

Load イベントで、表示するかどうかを判断して、表示する条件でない場合は Form を閉じたい。(表示しない)

これは考え方からして誤りだと思います。表示することが決まっていないのであれば Load しなければ良いですよね? Show メソッドを使わなければ良いですよね? 表示できる条件が整ったら Show メソッドを呼び出せばいいですよね? Load したのに即 Close がどれだけ無意味でコストが高いのかは火を見るより明らかですよね。

Load されることを前提に考えるから、おかしくなるのだと思います。Load イベントは初めて表示される直前に発生するイベントです。表示されるかどうか決まっていないのですから、Load イベントではなく判断するためのメソッドを用意して、そのメソッド内で判断すべきです。

いや、アプリケーションの初期化も含まれるんですよ。

ならば、その Form に依存するものではないので、尚更におかしいでしょう。エントリ ポイントで初期化用のメソッドを呼び出して、初期化すれば良いのではないでしょうか? (エントリ ポイントをご存知ないというパターンもありますが)

何も考えずに「これで実現できるからいいや」というノリで組むと、このような事態になります。できれば、コード レベルの仕様くらいは '考えてから' 組みましょう。コード レベルの仕様はプログラマが決めるものです。これができないと「プログラマ」ではなく「コーダー」になってしまうでしょう (社会人 1 年生くらいの新人のうちはできないかもしれませんが)。

ここで言う「コーダー」は、構文を理解し '仕様の実現はできる' 方々を指します。決して打っているだけという「パンチャー」の意味ではありません。

投稿日時 : 2006年2月12日 15:53

コメント

# re: 何故 Load イベントで判断する? 2006/02/13 22:13 Jitta
 ああ、、、なんか、アホなことしているような気がしてきた orz

> エントリ ポイントで検証メソッドを呼び出して、検証すれば良いじゃないですか?
ですよね oTZ

# re: 何故 Load イベントで判断する? 2006/02/14 1:08 じゃんぬ
じ、Jitta さん?

# re: 何故 Load イベントで判断する? 2006/02/14 9:05 うなまな
>Load イベントではなく、メソッドに実装すべきものでしょう。

ですよね。(同じく。。。orz)

「Loadイベントで初期化」という考え方があるのは、私にも
責任があるような・・・
公開しているサンプルなどで、必ずと言っていいほど、Load
イベントで初期化の処理を実装しているからです。

まぁ、色々な所で公開されているサンプルなどは、あくまで
サンプルなので、短いコードで実装して、「見ている人に分かればいい」
的な考えなので、これを、そのまま見ている人が実装してしまうのも問題かな。。。

これからは気をつけます。。。

# re: 何故 Load イベントで判断する? 2006/02/14 9:11 福王寺聡明(FP!)
私は基本的に検証メソッドを作成します。でも、.net出始めの頃は結構Loadに突っ込んでいました。まぁ、適材適所ですから orz...

# re: 何故 Load イベントで判断する? 2006/02/14 9:39 じゃんぬ
>うなまな さん
確かにサンプルの場合は、コピペで動作可能にするためにそうすることがありますね。
この場合はメソッド化して Call する程度がいいんですかね?

>福王寺さん
構造化言語からのアレですよね。
検証というひとつの機能ですから。(^^)

# re: 何故 Load イベントで判断する? 2006/02/14 10:29 うなまな
>この場合はメソッド化して Call する程度がいいんですかね?
ちゃんと明示的に初期化処理を実装したものが理想なんですけどね。
この辺は、利用する側の方が、「初期化」をどう判断するかによると
思うので・・・

初期化処理が分かるようにコメントとして記載するのもありかな。

# re: 何故 Load イベントで判断する? 2006/02/14 12:27 じゃんぬ
Load イベントでは、Form に関する初期化は構わないのですから、
サンプル的には問題ないような気がします。(^^)

アプリケーション全体だと、そうですねー。
VB の場合はエントリ ポイントが勝手に作られないので、
最初に実行されるのが Load イベントだと誤解している方もいるので難しいですねー。

# re: 何故 Load イベントで判断する? 2006/02/14 12:28 じゃんぬ
といっても、初期化処理の結果で「やっぱり表示しない」は有無を言わさずダメですね。(^^)

Load させといて、何だよ! ってことです。
呼び出しておいて、待ち合わせ場所にいないのかよ! みたいな。

# re: 何故 Load イベントで判断する? 2006/02/14 16:53 特攻隊長まるるう
[VB6.0]時代から続く(←ゴメン、それ以前は触ったこと無いので知らんデス)
スタートアップの設定 Form1 、デザイン画面でフォームをダブルクリックして
書かれるデフォルトのイベントが Load イベントっていう、『ここに書け!』と
言わんばかりの仕様も問題かと思います。…が、初心者が適当に作って
なんとなく動いてしまう『VBらしさ』はこれで良いのかなぁ?と思ってみたりw

きれいなコードを書くにはやっぱりオブジェクトの扱い方とか、概念がしっかり
してこないとダメでしょ。…勉強してもらわないと。
>*「Load イベントで初期化して、失敗した時は Form を表示したくない」
逆にプログラマのレベルを知る素材となる言葉…と見切ってしまうのもアリかと。

# re: 何故 Load イベントで判断する? 2006/02/14 17:49 じゃんぬ
>特攻隊長まるるうさん

同感です。私も書いたように、

> > VB の場合はエントリ ポイントが勝手に作られないので、
> > 最初に実行されるのが Load イベントだと誤解している方もいるので難しいですねー。

これが問題かなぁって思います。

少なくともプログラマ職である方は素人ではないハズ (素人であってはいけない) ので、意識はして欲しいですね。
万人に求めてはいけないという点でも同意です。

# re: 何故 Load イベントで判断する? 2006/02/15 14:48 Moo
Form_Loadが500行なソースのレビューしたくない...

# re: 何故 Load イベントで判断する? 2006/02/15 22:23 オノデラ
 うちのサンプル全部直さないと…orz _O_

# re: 何故 Load イベントで判断する? 2006/02/16 20:23 がる
は~い。門外漢からの素朴な質問でっす。
今回の話とかって「こうやるのがスタンダードな手順」みないな記述とか推奨パターンとかってどこかで提示されていないものなんですか?
いあ、プログラムのエントリーポイントと初期化の問題って(そこから更に終了時のお掃除処理とか)、結構重要だと思ってるので。
# 特にデーモン作ってHUPシグナル捕捉タイミングとかkill系シグナル捕捉タイミングとかで(苦笑


# re: 何故 Load イベントで判断する? 2006/02/17 22:21 Jitta
> 2006/02/14 1:08 じゃんぬさん
 ブログのネタにするのでその時、と思っていたのですが、当分書けそうにないので。

 ライセンスのチェックをね、しようと思って。「ライセンスがない」という判断を、
* ライセンスファイルが書き換えられている(異常)
* 試用期間を過ぎている(異常)
* 試用期間内(正常)
で判断し、異常なときはメッセージウインドウを出して終了、したかったんですね。
 で、Load イベントで Activate イベントハンドラ登録して、Activate でハンドラ削除、その後にチェック、をしています。Form のインスタンスがなくても、MessageBox を表示することは出来ますね。。。
 しっかし、ちゃんと「コンストラクタで」って書いてあるじゃないか→参考にした記事
http://japan.internet.com/developer/20051011/29.html


> 「Loadイベントで初期化」という考え方があるのは、私にも
> 責任があるような・・・
 一番重いのはマイクロソフト。自動生成されるコードに「初期化するコードをここに書きます」と、コメントが入っている。。。

# re: 何故 Load イベントで判断する? 2006/02/19 14:30 じゃんぬ
> 自動生成されるコードに「初期化するコードをここに書きます」と、コメントが入っている。。。

クラスである以上、「このクラスのメンバを初期化するコード~」になるでしょうね。
私は脳内変換してそのように読み取っていましたが、そうでない人もいるのでしょう。
確かに「このクラスのメンバを」と表記して欲しいですね。

# re: 何故 Load イベントで判断する? 2006/09/06 21:53 おしょう
はじめまして。

私の理解ではフォームであろうが一つのクラスであり、本来
クラスインスタンスが生成(New)されたときに初期化するべき
処理を列挙していくというのがあるべきなのかと理解しており
ました。
 初期化処理も、フォームを表示した後に再度利用する場合を
考えれば、一つのメソッドとして記述することで簡単に再利用
できると思います。

 例:Form Load ↓
      Call (テキストボックスを初期化する処理)
       ・
       ・
   Bottun1 Click ↓
      Call(テキストボックスを初期化する処理)

ただ、入門書は結構Loadイベントで記述されているので
そういうものだと思いこんでましたね。



# re: 何故 Load イベントで判断する? 2006/09/06 21:58 中博俊
コンストラクタではやっちゃいかんのです。
#詳細は割愛
でLoadでやってもいいんです。
そのまま表示させたくないとかわがまま言わなければ。

MFCではフォーム系の前に初期処理をして音みたいに欠いてますが。(^^;;

#  [Form Load Event]で初期化する問題 2006/09/12 18:23 Ognacの雑感
[Form Load Event]で初期化する問題

# Form_Loadイベントに関する雑感 2006/09/22 1:08 ひよっこプログラミング
Form_Loadイベントに関する雑感

# re: なぜ Load イベントで判断する? 2007/03/06 13:13 biac
いまさら便乗 f(^^;
ASP.NET では、 「なぜ Load イベントで描画する? 」 って話も。
http://akari.kabe.co.jp/MagSite/Content.modf?id=20070306124808

# re: なぜ Load イベントで判断する? 2007/12/22 14:37 123
した不利かげてない

# CS:COMPEL TOUCHED IN THE LEAD Stash - Trek certifiable all skins, stickers and items 2016/02/25 17:31 Ronaldnuap
http://www.themathpage.com/news/cs-go-buy-online.htmlcs go buy online

http://www.mbiaz.com/uploads/cs-go-steam-account.htmlcs go steam account

http://www.zeks.com/uploads/steam-cs-global-offensive.htmlsteam cs global offensive

http://www.socorroswcd.com/uploads/cs-go-top-players.htmlcs go top players

http://www.pci-central.org/uploads/cs-go-items.htmlcs go items

http://www.dspr-me.org/uploads/steam-market-cs-go.htmlsteam market cs go

http://www.factsfinder.com/uploads/cs-g.htmlcs g

http://www.mbiaz.com/uploads/cs-go-skins-cheap.htmlcs go skins cheap

http://www.putnam-sheriff.org/uploads/cs-go-key-store.htmlcs go key store

http://nteu45.org/uploads/cs-go-blog.htmlcs go blog

http://www.zeks.com/uploads/csgo-sale.htmlcsgo sale

http://www.freemotionslider.com/uploads/cs-go-go.htmlcs go go

http://www.salemchurch.cc/uploads/cs-go-keys-buy.htmlcs go keys buy

http://www.freemotionslider.com/uploads/cs-go-skins-trade.htmlcs go skins trade

http://www.themathpage.com/news/csgo-update.htmlcsgo update

http://www.cambridgegroup.net/uploads/best-csgo-skins.htmlbest csgo skins

http://www.endlessvisions.net/uploads/cs-go-key-free.htmlcs go key free

http://www.thesurgicalsideshow.com/uploads/counter-strike-global-offensive-steam-price.htmlcounter strike global offensive steam price

http://www.themathpage.com/news/best-cs-go-player.htmlbest cs go player

http://www.domadesigns.com/uploads/cs-go-last-update.htmlcs go last update

http://www.endlessvisions.net/uploads/cs-go-skin-price.htmlcs go skin price

http://www.pressherenow.com/uploads/counter-strike-global-offensive-discount.htmlcounter strike global offensive discount

http://www.greenwoodscharter.org/uploads/cs-go-global.htmlcs go global

http://www.endlessvisions.net/uploads/counter-strike-global-offensive-steam-key-free.htmlcounter strike global offensive steam key free

http://www.hoc5.org/uploads/how-to-get-cs-go-for-free-on-steam.htmlhow to get cs go for free on steam

http://www.doori-nyc.com/uploads/free-cs-go-skins.htmlfree cs go skins

http://www.kershawleonard.net/uploads/newest-cs.htmlnewest cs

http://www.calfireslo.org/uploads/valve-cs-go.htmlvalve cs go

http://www.shapefinancial.com/uploads/global-offensive-discount.htmlglobal offensive discount

http://www.zeks.com/uploads/play-cs-go.htmlplay cs go

http://www.silverspringcenter.com/uploads/c-sgo.htmlc sgo

http://nteu45.org/uploads/cs-go-1.htmlcs go 1

http://www.doori-nyc.com/uploads/p90-skins-cs-go.htmlp90 skins cs go

http://www.sanborntonnh.org/uploads/cs-go-skin-store.htmlcs go skin store

http://www.zeks.com/uploads/globaloffensive.htmlglobaloffensive

http://nteu45.org/uploads/cs-global-offensive-price.htmlcs global offensive price

http://www.anglingthailand.com/uploads/cs-go-skins-database.htmlcs go skins database

http://www.elitser.com/uploads/all-csgo-items.htmlall csgo items

http://www.socorroswcd.com/uploads/csgo-news.htmlcsgo news

http://www.fuscoauctions.com/uploads/download-cs-go-free.htmldownload cs go free

http://www.pci-central.org/uploads/csgo-bet.htmlcsgo bet

http://www.ucratx.org/uploads/cs-go-steam-store.htmlcs go steam store

http://www.lexingtondistillerydistrict.com/uploads/cs-go-teams.htmlcs go teams

http://www.sanborntonnh.org/uploads/cs-go-new-case.htmlcs go new case

http://www.valleycom.org/uploads/csgo-marketplace.htmlcsgo marketplace

http://www.valleycom.org/uploads/p2000-skins.htmlp2000 skins

http://www.cottonsetcquiltshop.com/uploads/cs-go-buy-key.htmlcs go buy key

http://www.salemchurch.cc/uploads/purchase-counter-strike-global-offensive.htmlpurchase counter strike global offensive

http://www.zeks.com/uploads/cs-global-offence.htmlcs global offence

http://www.ptcny.com/uploads/cs-go-net.htmlcs go net

http://www.sanborntonnh.org/uploads/cheap-csgo-keys.htmlcheap csgo keys

http://www.thesurgicalsideshow.com/uploads/global-offensive-key.htmlglobal offensive key

http://www.zeks.com/uploads/cs-go-servers-down.htmlcs go servers down

http://www.ptcny.com/uploads/csgo-skins-price.htmlcsgo skins price

http://www.domadesigns.com/uploads/csgo-site.htmlcsgo site

http://www.factsfinder.com/uploads/cs-go-steam-price.htmlcs go steam price

http://www.projectwittenberg.org/uploads/cs-go-store.htmlcs go store

http://www.datamology.com/uploads/csgo-price-list.htmlcsgo price list

http://www.freemotionslider.com/uploads/trades-cs-go.htmltrades cs go

http://www.mbiaz.com/uploads/steam-csgo-key.htmlsteam csgo key

http://www.lexingtondistillerydistrict.com/uploads/valve-cs-go-servers.htmlvalve cs go servers

http://www.subsurfaceconstructors.com/uploads/counter-strike-global-offensive-free-keys.htmlcounter strike global offensive free keys

http://www.winegrapebroker.com/uploads/cs-go-skins-wear.htmlcs go skins wear

http://www.kershawleonard.net/uploads/valve-cs-go.htmlvalve cs go

http://www.dspr-me.org/uploads/cs-go-skin-maker.htmlcs go skin maker

http://www.cambridgegroup.net/uploads/game-cs-go.htmlgame cs go

http://www.socorroswcd.com/uploads/index.htmlcs go game

http://www.socorroswcd.com/uploads/servers-for-cs-go.htmlservers for cs go

http://www.creativelittlegarden.org/uploads/cs-go-game-play.htmlcs go game play

http://www.hplovecraft.com/uploads/steam-cs-go-free.htmlsteam cs go free

http://www.ptcny.com/uploads/cs-go-m4a4-skins.htmlcs go m4a4 skins

http://www.salemchurch.cc/uploads/counter-strike-global-offensive-cheap.htmlcounter strike global offensive cheap

http://www.themathpage.com/news/cs-go-items.htmlcs go items

http://www.factsfinder.com/uploads/cs-items.htmlcs items

http://www.thesurgicalsideshow.com/uploads/buy-cs-go-case-keys.htmlbuy cs go case keys

http://www.satdw.com/uploads/steam-cs-go-community.htmlsteam cs go community

http://www.mbiaz.com/uploads/cs-go-buy-key.htmlcs go buy key

http://www.steliasorthodoxchurch.org/uploads/cs-go-help.htmlcs go help

http://www.pressherenow.com/uploads/cs-go-skins-buy.htmlcs go skins buy

http://www.cottonsetcquiltshop.com/uploads/cs-go-key-store.htmlcs go key store

http://www.datamology.com/uploads/rare-cs-go-skins.htmlrare cs go skins

http://www.colorado-serum.com/uploads/cs-go-news.htmlcs go news

http://www.ptcny.com/uploads/csgo-free-keys.htmlcsgo free keys

http://www.ucratx.org/uploads/counterstrike-go-steam.htmlcounterstrike go steam

http://www.evansmarine.com/uploads/cs-go-game-key.htmlcs go game key

http://www.careministries.org/uploads/buy-cs-go-case-keys.htmlbuy cs go case keys

http://www.zeks.com/uploads/best-cs-go-player.htmlbest cs go player

http://www.kershawleonard.net/uploads/is-cs-go-down.htmlis cs go down

http://www.satdw.com/uploads/cs-go-top.htmlcs go top

http://www.salemchurch.cc/uploads/cs-go-key.htmlcs go key

http://www.datamology.com/uploads/index.htmlcs go servers

http://primaadvisors.com/uploads/cs-go-selling-items.htmlcs go selling items

http://www.pci-central.org/uploads/cheap-csgo-keys.htmlcheap csgo keys

http://www.evansmarine.com/uploads/cheap-cs-go-keys.htmlcheap cs go keys

http://www.sanborntonnh.org/uploads/cs-go-keys-price.htmlcs go keys price

http://www.subsurfaceconstructors.com/uploads/counter-strike-global-offensive-free-keys.htmlcounter strike global offensive free keys

http://www.salemchurch.cc/uploads/cs-skin.htmlcs skin

http://www.endlessvisions.net/uploads/new-cs-go-cases.htmlnew cs go cases

http://www.steliasorthodoxchurch.org/uploads/counterstrikeglobaloffensive.htmlcounterstrikeglobaloffensive

http://www.elitser.com/uploads/cs-go-t.htmlcs go t


# re: なぜ Load イベントで判断 / Close する? 2016/07/18 11:50 Maillot NBA

http://www.kobexielite.com/ kobe xi elite
http://www.kobe11elite.top/ Kobe 11 Elite
http://www.kobexelite.top/ Kobe X Elite
http://www.compartec.es/ zapatillas air max 2016
http://www.nikeairpegasus.fr/ Nike Air Pegasus
http://www.2016maillotnba.fr/ Maillot NBA


Post Feedback

タイトル
名前
Url:
コメント: