Unit1.pasに全部書いちゃいました。【現在1万行】
1 :
デフォルトの名無しさん:
現在11028行
もうわけらからん!
2 :
デフォルトの名無しさん:03/09/25 02:37
2ゲットは(・∀・)ギャオが頂いた(・∀・)ギャオ
>>1号車 1番2番スタイルでチェッカー(・∀・)ギャオ
>>2号車 ここは(・∀・)ギャオ(・∀・)ギャオ
>>3号車 ギョウじゃないよ(・∀・)ギャオだよ
>>4号車 前を行く各々方道を開けられーい 常勝(・∀・)ギャオがまかり通ーる
>>5号車 涙チョチョぎれる高配当(・∀・)ギャオ
>>6号車 本命党の皆様おめでとうございまーす(・∀・)ギャオ
>>7号車 針、3秒前、2秒前、1秒前、各車一斉にスタート(・∀・)ギャオ
>>8号車 →北
━―━―━―━―━―━―━―━―━[JR浦田駅(・∀・)ギャオ]━―━―━―━―━―━―━―━―━―
(・∀・)ギャオの出没地
3 :
デフォルトの名無しさん:03/09/25 02:45
どのへんを、どう分割したりコンポーネント化するん?
コツ教えれ。
このスレ削除依頼出して初心者スレで聞き直したら教えたげるよ
5 :
デフォルトの名無しさん:03/09/25 02:50
おいおい初心者扱いかよ。
おまえよか格上だと思うぞ。
6 :
デフォルトの名無しさん:03/09/25 03:00
まあ、俺はウンチクや技術論、どのコンパイラがいいだの
長々話す暇があったらプログラムする実行派なんだよね。
ゴミソフトしか作らないでぐちゃぐちゃ偉そうに言ってるの馬鹿みたいじゃん。
でも、少しやばくなってきたぜ。
どう分割するか。それはあなたの心の中にあります。
分割する単位は、
関数・手続
クラス
ユニット
アプリケーション
まず、関数・手続きに分割していますか? 出来るだけ小さくするといいでしょう。
関数、手続きは関数内関数にしてゆくとよいでしょう。関数内関数は簡単にクラスに分割出来ます。
8 :
デフォルトの名無しさん:03/09/25 15:23
/""`'・.,
,/' ..::::\.,__,,,.....,,,__
,i' ...::::::::""" `''・-、.,_ _,,......,,,_
i' ...::::" ":::`・'"~ :|
/" " :::: ...::,l
./' "::::::/
.i' ::"i,
i' ● .::::::|
.i' .:::::::|
i; i、., ,. ●...::::::::|
'、 | `"~'/ ::::::::ノ
\ l, / .:::::::/ おかねちょうだい!!
`/( i.,_,/ ...:::::ノ'
,.-'"~ ~"ー-.,,__ .....:::::::ノ').,
./=ー'"~"`ー-.,_~"\-.,_ ,...,_ "";.-、::/ノ::: 'i,
/ ̄ :::::~`i.():::\`""| `(^);;;;;|;;/;:::::::: 'i,
. / ::::::`i |:::::):;;;;;i、,/人_ノ;;;;'i,::::::::::: i
| .:::::::|/::::└ー-,;;;\;i;;;;|/;:::::::::::: i
i.,_,.人 ..::::::/ :::::::::::::/;;;;;;;'i,'i;;;;|\;:::::::::::: i
`; .::...:::::/ :::::::::::`- .,_;;;;i,ノ;|;;;/;:::::::::::: /
`、.,..:::::::::::::::::/ :::::::::::::::;;;;;;\,i ,/;;;;;:::::::::::|/
`i"`-.,_,.ノ ::::::::::::::::;;;;;;;;;;;\|;;;;::::::::::::|
| :::::::::::::::::::;;;;;;;();;||;;;::::::::: .ノ
とにかく全部アップしろ。
みんなで分析/分割してやるから。
10 :
デフォルトの名無しさん:03/09/27 01:18
Delphiは皇帝の言語!!!
1万行?まだまだだな。
分割してるのに
一個のファイルCで、8000行行った。
ファイル総数は500ぐらいあるかな
13 :
デフォルトの名無しさん:03/09/27 01:24
僕はUnit1.pasに10万行入れましたけどどうすればいいですか?
制御構文の入れ子は最深20ぐらいだな。
15 :
デフォルトの名無しさん:03/09/27 02:18
12,13は使えないグラマー
※しかし本人はエリート意識が強い。
え、10万行も扱えるんですか
あのエディタ
17 :
デフォルトの名無しさん:03/09/27 03:10
2~3000ステップで分割して欲しいね。
俺は500行程度が限界だな
おかげで分割しまくったファイルが散乱してるが
19 :
デフォルトの名無しさん:03/09/27 08:33
>>18 それも非効率だな。
ファイルが多すぎると訳分からなくなる。
一つのファイルにある程度多めに書いて、
見出しつけておくほうが管理しやすい
自分でライブラリを作ってゆく時は(いきなりコンポーネント作れる人は別にして)
1、最初は、MyLib.pas に利用可能なのは全部入れておく
2、関数の数が100くらいになったら、一度整理して機能別に分けてユニットを分割する
って感じでやればいいと思う
Del8のコードエディタはC#みたいな感じ(アウトラインエディタ?)になるのかな?
1ファイル、MAXで何行ぐらいが適当?
>ファイルが多すぎると訳分からなくなる。
Object Pascalもパッケージの概念くらい使えればねぇ
いや、ファイル管理がずさんならネームスペースやパッケージがあっても
一緒だよ。あるていど計画性がないと。
26 :
デフォルトの名無しさん:03/09/27 12:46
イベントを別ユニットに分ける方法ないかな、スマートに。
むかしこの疑問に「フレーム使え」とかいう意見があったんだけど、実はいまだに意味がわからないんだ。
もちろんフレームの使い方はわかってるつもりなんだけど、ソース分けられないよねぇ?
1: Unit1.pasに全部書いちゃいました。【現在1万行】 (26)
2: Delphiばかリやってると馬鹿になる (874) (587)
ワロタ
>>26 イベントは別のユニットに書けるよ。
でも、イベントを別ユニットに書かない方がいい。
効率悪いように見えても、
一旦そのフォームのあるユニット中に、呼び出しコードを書くようにすべき。
そうじゃないと、その分割意味あるのかい? て状況になるし、
>>26 スマートに書くなら、TAction を継承して作っておくといいよ。
次に使う時はそれを RegisterActions でIDEに登録しておけば楽チン
>イベントは別のユニットに書けるよ。
えっできるの?
イベントをデータモジュールに書いておけばオブジェクトインスペクタに出てくるけど、わざわざデータモジュール作るのも何だかなって感じで
あとは設計時にOnXXX := なんて方法しか思いつかないっす
できれば教えてください
イベントのコードだけで1万行届くんで・・・分割に意味があると思う
次はエディタで折り畳めるようになったらいいなぁ
>>30 出来るというのは
>イベントをデータモジュールに書いておけば
>設計時にOnXXX := なんて方法
の事だよ。
TFormだったかの継承じゃないと、オブジェクトインスペクタに出せないからさ。
でも、
>イベントのコードだけで1万行届
ってのはマズイよ。 イベントには 3行くらいまでとか自分ルール決めて、
それ以上はデータクラスみたいなのを自分で作って、そのクラスのメンバーを呼び出すような格好にしないとね。
32 :
デフォルトの名無しさん:03/09/27 14:01
どうせなら Project1.dpr に全部書こうよ。
http://member.nifty.ne.jp/yamazaki/doc/code_design/vol03.html > Javaのコードは1ファイル1クラスであることが基本のようです.
> よって,1つのクラス内のデータ(メンバ)をアクセスするための関数(メソッド)群は
> 1つのファイルに書くことになります.
> そして,筆者のもらったJavaのコードはなぜか1つだったのです.
> 筆者は一瞬,ファイルを開こうとする手を制止する「見えない力」を感じました.
> しかし,筆者はその見えない力を断ち切り,そのファイルを開いたのです.
> そ,そこに現れたのは,な,なんと,1ファイル14万行のソースコードだったのです.
> 筆者は自分の目を疑いました.
> 「まさか,1クラスではないよな」と調べてみるのですが,
> どうやら1クラスで14万行….その中に複数のメンバ関数があり
> ,1つ1つのメンバ関数もかなり大きい.
> クラスのメンバ変数はグローバル変数のように扱われていました.
14万行のクラス・・・・
ビットマップの各種エフェクトつきコピー(複数色フォーマット対応)メソッドをご丁寧に全部自前でインラインに書いたソースを見たことがあるが、それでも9000行だったぞ。
一つのユニットが数万行になるとデバッガのブレークポイントの動作がおかしくならないか?
36 :
デフォルトの名無しさん:03/10/01 04:19
万単位って多いの?
デバッガのどっかに16bitの個所があるとか
↑多分、「俺ってギャグのセンスあるぅ~」って思っているんだろうね。
40 :
デフォルトの名無しさん:03/10/03 01:10
38は関西のコテコテ芸人の馬鹿息子だろう。
>>37 どうなんだろ…。最初は自分のコードにバグがあるからと思ったんだけど、適当に
ソースを別々のユニットに分割したら直ったのでそうなのかも。大抵の場合困る事は無い
けど、相互参照を用いたコードは一つのユニットに記述しなきゃならんので問題かもね。
>41
デバッグ情報をつけた .exe の大きさって、どれくらいでした?
>>42 15Mbくらい。かなり大きいのでdllでプログラムを分割とかすべきかも。
それくらいなら日常的に使っているがなぁ...
んじゃ、やめとこ。
相互参照をするユニットを書くときに、
・interface だけまとめて定義するユニットをつくり、
実装は個々のユニットで行う
・抽象クラスだけまとめて定義するユニットをつくり、
継承は個々のユニットで行う
なんてやり方はありですか?
>>46 private をどう処理するつもりなの?
>>46 inner classを保持してるclassがinner classを参照する場合、interface節で
inner classのunitをuses、参照する。inner classからinner classを保持して
るclassへの参照は、とりあえずTObject型にinner classを保持してるclassへの
参照を代入。implementation節でinner classのunitをusesし、as演算子で
down castを行い参照というのはどうよ?
>>47 interface or 抽象classをまとめて定義するだけだからprivateなmemberは無い
んでない?確か仕様上、同一unit間ではprivateなmemberにも参照可能だったっ
け。それをどう表現するかって事?
>>47 ええと、相互に参照しあうクラスを宣言しつつ、かつ実装は
別ユニットにわけたいわけです。private は実装・継承時に
考えればいいんじゃないかなーとおもいます。
>>48 やっぱりそうなりますかね。。。as の嵐になってしまう。
それにしてもなんで同一ユニット内のクラスって private メンバまで
丸見えなんでしょうね。C++ の friend に対する回答?
>>49 >C++ の friend に対する回答?
そんなとこじゃないですか。関数ローカルなstatic変数を実現できるよう、型付
定数に代入可能だったりしますしね。
51 :
デフォルトの名無しさん:
高級言語ならまだマシだろ。
俺の組み込み機器用アセンブラソース(68K)は14,000行&400KByteぐらいだ。
もう手がつけられん。