為什麼多名稱空間有紅色錯誤及其他webform 不能夠uses它們?怪! |
答題得分者是:wodahs
|
ATEIN
高階會員 發表:105 回覆:320 積分:125 註冊:2002-07-05 發送簡訊給我 |
|
wodahs
初階會員 發表:0 回覆:33 積分:26 註冊:2004-02-26 發送簡訊給我 |
|
ATEIN
高階會員 發表:105 回覆:320 積分:125 註冊:2002-07-05 發送簡訊給我 |
|
wodahs
初階會員 發表:0 回覆:33 積分:26 註冊:2004-02-26 發送簡訊給我 |
當初在D8關於Namespace是一個問題(ide compiler限制),後來2005加上這個機制,而Namespace的來源即是檔名部份不知2006會不會改,Delphi檔名與unit的關係是源於傳統.單一檔的話,主要是未來IDE/Delphi.Net Compiler可以支援即可.非標準.net compiler的限制. 現在標準的作法是: A檔:(InfoLight.Lib1.MyPub.pas)
unit InfoLight.Lib1.MyPub
.... B檔:(InfoLight.Lib1.MyTest.pas)
unit InfoLight.Lib1.MyTest
.... C檔:(InfoLight.Lib2.Test.pas)
unit InfoLight.Lib2.Test
.... 所以一個Lib裏會有上面三個Namespace. Wodahs
|
ATEIN
高階會員 發表:105 回覆:320 積分:125 註冊:2002-07-05 發送簡訊給我 |
如此一來,delphi中就沒有一個.pas 多個namespace 的功能了 delphic# .cs卻有這樣的功能,->多個namespace
但李 維大師 回答我:可以這樣做,...但不是有單一pas的限制嗎? unit MyCompany.Proj2.RD1; interface type
TMyClass = class(System.Object)
private
{ Private declarations }
public
{ Public declarations }
end; TMyClass1 = class(System.Object)
private
{ Private declarations }
public
{ Public declarations }
end; unit MyCompany.Proj1; interface type
TMyClass = class(system.Object)
private
{ Private declarations }
public
{ Public declarations }
end; TMyClass1 = class(system.Object)
private
{ Private declarations }
public
{ Public declarations }
end; 李維大師的沒有這限制?奇怪? DHM
------
ATEIN |
wodahs
初階會員 發表:0 回覆:33 積分:26 註冊:2004-02-26 發送簡訊給我 |
Delphi.Net的IDE/Compiler一直在發展,我對於Delphi.NET並不熟,沒有特別研究,可能有特別的寫法可以"技巧"性讓Compiler可以編譯,或是Spec是把幾個檔案寫在一起說明,不是指再同一個檔案(我自己想的,不要太認真),其實只要與C#一樣,把Namespace與檔名的關聯截斷(與C#),或新增/修改IDE編譯的功能偷偷轉換應該可以達到(例如Delphi.Net ASP.NET也是偷偷做手腳,偷用C#的Compiler(csc)幫忙作一部分事情,可從行程監控看出呼叫的命命列),可能還是直接請教李維大師比較快(我只因緣景仰他的尊容一次,得幸匆匆跟他聊幾句話,不熟,不要叫我問 :P);不過,個人認為這種寫法應該是一種"IDE技巧"不是一種"好技術",因其打壞了Namespace部份立意,讓程式分割,管理,維護變得更複雜,我反而建議,把相同Namespace分寫成不同檔案,增加分割性,提高管理分類,而不建議把一堆不是很相關的東西放在一起,(如果相關,應該儘可能放在同一個Namespace比較好).以上是個人淺見,僅供參考. Wodahs 發表人 - wodahs 於 2005/02/18 23:29:20 發表人 - wodahs 於 2005/02/18 23:49:56
|
ATEIN
高階會員 發表:105 回覆:320 積分:125 註冊:2002-07-05 發送簡訊給我 |
|
wodahs
初階會員 發表:0 回覆:33 積分:26 註冊:2004-02-26 發送簡訊給我 |
我自己不太熟Delphi,也不是科班出身,半路出家,所以關於它發展的淵源,可能要請教大師,不過,每個Spec當初訂定一定有他希望簡化或解決的問題,可能是簡化編譯器Loading,RTTI....(上面是我自己亂想,不要認真),把它當作歷史就好了,如果大家真的有需求,之後會再硬觀眾要求些修正,例如Namespace於D8->D2005不就硬需求改善了嗎?大家多去QA 投票吧. 另外,關於您提到的兩個優點,可能會因專案規模,分工規劃等不同評價.
例如,如果是龐大架構,把不同Namespace寫在一起,可能maintain會比較複雜,即使相同的Namespace,也是蠻麻煩的,再者,如果是分工的話,總不能其他人Check out改的話,大家只能枯等,這樣開發團隊效能會打點折扣.其實您如果留意一些大師開發的程式,她們甚至把類別分得非常散,每個檔案大多不到20行.我想她們一定有他們的考量. 以前大家可能覺得一個功能在一個程式裡撰寫即可,不需要再分割副程式,後來規模大,複雜度高,重用需求,Unit test... 觀念上也漸漸可以接受分寫成許多副程式.甚而出現一個不成文的習慣,每個好的副程式儘不要超過20行code,因此,個人建議應依專案的特性選擇分割方法.有時邏輯分割會決定專案的良窳. 像C# 2.0出現分散實作概念的功能,可以把一個類別分寫到不同檔案實作,他主要目的可能並不是想解決特別管理的問題,也不是要大家都如此寫,但對於Template Code-Gen卻提供不錯的邊際效益(個人亂想,您還是問一下科班的:)). Wodahs 發表人 - wodahs 於 2005/02/20 15:33:15 發表人 - wodahs 於 2005/02/20 15:35:27
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |