>>比如tab頁(yè)的初始化和ViewStack,每次后面的都不初始化,至今沒(méi)找到解決辦法,我恨這個(gè)特性。
設(shè)置一個(gè)屬性就可以在啟動(dòng)時(shí)自動(dòng)初始化所有頁(yè)面了。有這么困難嗎?
文檔里是沒(méi)有寫的,因?yàn)檫@是SWT的內(nèi)部實(shí)現(xiàn)。你從Eclipse網(wǎng)站上下載SWT源代碼包,打開以后就可以找到這些包和所有代碼,里面實(shí)現(xiàn)了什么則需要自己去研究。
re: 武俠隱喻反思 TreeNode 2006-12-01 17:55
腳踏實(shí)地是一種職業(yè)素養(yǎng)。這不是道德要求:我們要的是合格的軟件工程師,不需要正義的使者。
我衡量一個(gè)人的標(biāo)準(zhǔn),不是看技術(shù)水平高低,而是看他對(duì)開發(fā)的作用:是建設(shè)還是破壞。如果一個(gè)人水平很高,但是不能和其他人合作,那么水平再高也不能要。
你可以理解為團(tuán)隊(duì)協(xié)作,但我真正要表達(dá)的意思是:武俠觀念影響下容易出現(xiàn)唯技術(shù)論的“高手”,而不是IT業(yè)真正需要的軟件工匠。
re: 武俠隱喻反思 TreeNode 2006-12-01 17:27
@ 心內(nèi)求法:
你所說(shuō)的“大俠”所為正是我想要反對(duì)的東西。
至于德,我不太想提它,因?yàn)楹臀蚁胝f(shuō)的關(guān)系不大,而且含義也太模糊。
在中國(guó)幾千年歷史上,道德禮教一直是統(tǒng)治者用來(lái)殺人的刀。
不如說(shuō)公民素質(zhì),可操作性還強(qiáng)一些。
re: 內(nèi)部類讓我厭惡Java TreeNode 2006-07-07 21:36
Java和內(nèi)部類都不是我罵的對(duì)象。語(yǔ)法只是語(yǔ)法,語(yǔ)法是無(wú)辜的。我想罵的是這個(gè)設(shè)計(jì)語(yǔ)言的人。
re: 內(nèi)部類讓我厭惡Java TreeNode 2006-07-07 08:43
樓上:這段代碼不是我寫的。我不過(guò)是把Eclipse.org上面那些大牛的code摘下來(lái)一段。
你看看你重構(gòu)出來(lái)的這幾個(gè)類有什么特點(diǎn)?它們都只有一個(gè)方法,并且沒(méi)有自己的任何狀態(tài)。這是一個(gè)典型的反模式。一個(gè)沒(méi)有自己狀態(tài)的類根本不應(yīng)當(dāng)是一個(gè)類。就像Math一樣,不過(guò)是為了為那些沒(méi)主的方法找一個(gè)雜貨柜。內(nèi)部類在這里就像一個(gè)雜貨柜。
更新text文本本來(lái)就應(yīng)當(dāng)是窗口的責(zé)任。把它作為類的方法是最自然最清晰的,而且可以重用。硬是塞一個(gè)內(nèi)部類干什么?為了滿足方法簽名而已。除此以外對(duì)代碼結(jié)構(gòu)沒(méi)有一點(diǎn)好處。
re: 內(nèi)部類讓我厭惡Java TreeNode 2006-06-22 18:59
@豬:
我不知道你有沒(méi)有用過(guò)Swing或SWT。為什么我討厭內(nèi)部類還不得不用它?原因文章和回復(fù)里已經(jīng)說(shuō)過(guò)好幾次了。
我還特意把程序代碼擺了出來(lái),似乎很多人都不看。哪位有信心說(shuō)“我能把第一段代碼改到很漂亮”嗎?那樣我就相信你。
我看那帖子里大部分回帖確實(shí)是善意的。這個(gè)小伙子沒(méi)有清晰的職業(yè)規(guī)劃,既然自己不是那種能挽狂瀾于既倒的人物,留著挨日子對(duì)自己對(duì)老板有什么好處?離開就等于對(duì)代碼沒(méi)感情了?我同意其中一個(gè)回帖,你確實(shí)不應(yīng)該鼓勵(lì)這種行為。公司需要能夠創(chuàng)造價(jià)值的員工,員工需要能為自己提供發(fā)展空間的公司,如果兩方面都作不到,那么走是再自然不過(guò)的。讓他弄清楚自己的職業(yè)發(fā)展對(duì)他今后有好處。
re: 內(nèi)部類讓我厭惡Java TreeNode 2006-06-16 20:22
看了,F(xiàn)unctionalJ還是弱類型的,引用方法名用的是字符串。
這種辦法還是需要得到工具的支持才用得起來(lái)。
re: 內(nèi)部類讓我厭惡Java TreeNode 2006-06-16 19:29
還是沒(méi)看到一個(gè)實(shí)例。呵呵。
@綠色使者、綠色心情
基本同意你的看法。Anders做了那么多年Delphi的架構(gòu),對(duì)于語(yǔ)言的理解的確很少有人能超過(guò)他。更重要的是他是一個(gè)注重實(shí)際的人,了解這方面程序員的實(shí)際要求。不過(guò)在企業(yè)架構(gòu)這方面他也并不怎么在行,人無(wú)完人吧
@Robin's Java World:
你猜錯(cuò)了,我的背景是VC和Delphi。接觸.Net要比Java晚兩三年。
我自認(rèn)對(duì)語(yǔ)言沒(méi)什么偏見(jiàn),Java的語(yǔ)言特性絕大多數(shù)也都樂(lè)意接受。只有內(nèi)部類是例外。
@原創(chuàng)專欄 開源學(xué)習(xí):
估計(jì)錯(cuò)誤。我很喜歡Ruby,我覺(jué)得Ruby用Block來(lái)實(shí)現(xiàn)回調(diào)的辦法很靈巧。
理解性差何指?如果不研究實(shí)現(xiàn)細(xì)節(jié),語(yǔ)法上沒(méi)什么不好理解的。
.Net面向?qū)ο笮詥?wèn)題,我認(rèn)為ADO.NET和ASP.NET的總體設(shè)計(jì)是有缺陷的。
但是對(duì)delegate這個(gè)語(yǔ)法特性,我覺(jué)得沒(méi)什么問(wèn)題。
@puke:
內(nèi)部類我能不用就不用,但是Java我還是要用的。OTL
@CowNew:
如果大家都在用看上去有問(wèn)題的辦法,那就一定存在真正的問(wèn)題。為什么那些人都要用內(nèi)部類呢?因?yàn)闆](méi)有辦法。難道有多少個(gè)菜單/按鈕你就寫多少個(gè)外部類不成?如果說(shuō)有人用錯(cuò)了,那么Java也有責(zé)任,因?yàn)檫@種語(yǔ)法就是在逼著人用錯(cuò)誤的辦法做事。
另:在google上搜索jfunctor竟然只有幾個(gè)看上去像C++的東西,關(guān)鍵字錯(cuò)誤嗎?
re: 內(nèi)部類讓我厭惡Java TreeNode 2006-06-16 00:34
delegate事實(shí)上不是指針而是對(duì)象,一個(gè)派生于MulticaseDelegate的對(duì)象。M$隱藏了它的細(xì)節(jié)而已。
內(nèi)部類的封裝和復(fù)用體現(xiàn)在哪呢?我是這么看的:如果它和外部類需要如此緊密的耦合,以至于可以完全訪問(wèn)外部類的所有私有字段,那么它恐怕根本就不應(yīng)該作為一個(gè)類。不然的話,它反而只是在破壞外部類的封裝。如果它和外部類沒(méi)有耦合或者只有接口耦合,那么它完全應(yīng)當(dāng)拿出來(lái)作為單獨(dú)的類。
我不知道內(nèi)部類復(fù)用性強(qiáng)指的是什么。內(nèi)部類嚴(yán)重依賴于外部類的存在,你根本沒(méi)法把它單獨(dú)拿出來(lái)復(fù)用。也許你說(shuō)的是多個(gè)方法可以共用同一個(gè)內(nèi)部類?這不是什么值得一提的優(yōu)點(diǎn),其他語(yǔ)言的回調(diào)方法一樣是可以共用的。
我還是希望能看到一個(gè)能證明內(nèi)部類優(yōu)點(diǎn)的實(shí)例,空對(duì)空的感覺(jué)實(shí)在是不太好。
re: 內(nèi)部類讓我厭惡Java TreeNode 2006-06-15 23:46
答CowNew:我自己就經(jīng)常這么寫。不過(guò)這樣也沒(méi)多少好處,比比看C#怎么寫:
btnInvoke.Click += BtnInvokeClick;
再看看Java如何用四五行代碼、兩層括號(hào)實(shí)現(xiàn)同樣的功能。何苦呢?
我倒是很想看看什么地方可以用內(nèi)部類優(yōu)雅的解決其他辦法解決不了或很難解決的問(wèn)題。但是我還沒(méi)有看到過(guò)。倒是很多Java教科書都苦口婆心的說(shuō):學(xué)會(huì)適應(yīng)內(nèi)部類吧,熟悉以后你會(huì)發(fā)現(xiàn)它并不是那么難。這樣的說(shuō)明本身就讓我覺(jué)得很有趣。
回調(diào)簡(jiǎn)單嗎?我在這個(gè)BLOG上的另外一篇里面也說(shuō)到這個(gè)問(wèn)題。回調(diào)概念簡(jiǎn)單,實(shí)現(xiàn)起來(lái)其實(shí)是相當(dāng)復(fù)雜多變的。這個(gè)領(lǐng)域里C++有functor,MFC有Handle Map,ATL有Thunk,VCL有TMethod,Python和Ruby有closure。多到讓人眼花繚亂的地步。Java的實(shí)現(xiàn)是最讓我覺(jué)得難看的一種。
答江南白衣:
JFunctor我不了解,有機(jī)會(huì)看看。
自己曾想過(guò)用反射,不過(guò)反射的問(wèn)題是Java并不把函數(shù)當(dāng)成對(duì)象,因此C#那樣的語(yǔ)法是行不通的。如果用方法名稱的話就沒(méi)有編譯器檢查,同步是個(gè)問(wèn)題。
另反射的性能也要考慮,對(duì)于一般的消息沒(méi)有問(wèn)題,如果是MouseMove或者很頻繁的Timer事件是會(huì)影響效率的。
今天上傳文件仍然失敗,我放棄了。全文做成PDF格式,有興趣的可以到這里下載:
http://www.yousendit.com/transfer.php?action=download&ufid=19BF243E3E7F9D9C
或者如果有Eclipse中文社區(qū)帳號(hào)的話,這里也可以:
http://www.eclipseworld.org/bbs/read.php?tid=5132
SWT的線程,只要了解Display對(duì)象提供的幾個(gè)同步方法,其他方面和一般的Java線程沒(méi)有什么差別了。Eclipse.org上面的文章也說(shuō)得很明白,似乎沒(méi)有什么東西可寫的。
答樓上,我已經(jīng)努力了一整天,不知是否因?yàn)槲恼绿L(zhǎng)格式復(fù)雜,這個(gè)HTML編輯器速度難以忍受而且頻頻出現(xiàn)腳本錯(cuò)誤,上傳文件也失敗。我覺(jué)得很失望。或許我會(huì)想其他辦法解決。