• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            eXile 的專欄

            共5頁: 1 2 3 4 5 
            re: 對臨時變量的引用 eXile 2008-01-29 12:57
            在這個例子中,s所引用的臨時變量的生命期和s的生命期是一致的。
            gips現(xiàn)在只有高級會員能下了啊,而且好象只能用三個月。。
            FROM JAVAEYE:
            注釋與文檔的本質(zhì),是為了便于軟件的開發(fā)和維護(hù),而不是在一道一道的工序之間作為“交接班”的說明
            FROM JAVAEYE:
            很多大公司的代碼都沒有任何注釋,很多大師寫代碼也沒有注釋(看看junit就知道了,大家可能不知道這個東西是兩個大師在飛機(jī)上試驗(yàn)結(jié)對編程的副產(chǎn)品)。原因在于他們根本就不能容忍任何注釋造成的味道。
            FROM JAVAEYE:
            實(shí)際上過多的注釋妨礙了重構(gòu)的進(jìn)行,如果你想讓代碼僵化那么就寫大量的注釋好了,越多越好,甚至注釋:代碼=10:1。重構(gòu)的結(jié)果往往是刪除掉大量的注釋,因?yàn)樗鼈兓蛘咭呀?jīng)不適合代碼當(dāng)前的結(jié)構(gòu),或者已經(jīng)不再需要,因?yàn)榇a的結(jié)構(gòu)已經(jīng)非常清晰了。而且我并不知道是否還有可能進(jìn)行下一次重構(gòu),那么我寫太多的注釋是不是很有可能是在做無用功?我其實(shí)只要寫很少量的注釋就足夠了。
            FROM JAVAEYE:
            就說注釋好了,比較一下:
            1。可運(yùn)行的代碼
            2。測試代碼的單元測試和其他測試
            3。注釋

            這個重要性應(yīng)該是向下遞減的。沒有1,其他都沒有意義了。沒有2,就沒有一種可執(zhí)行、可重復(fù)的方法來驗(yàn)證1的正確性。

            至于注釋,對于程序的功能、正確性和可靠性,對于客戶來說是沒有任何意義的,所以除非有特殊的理由,我們才去寫注釋。

            一般來說,堅(jiān)持寫注釋的人最重要的觀點(diǎn)是便于自己或后來者理解代碼,減小程序維護(hù)和變更的成本。這個我們當(dāng)然喜歡,但是要注意幾點(diǎn):
            1。注釋到底是不是最好的工具來加快和精確理解
            2。達(dá)到這樣的目的需要多少成本

            第一點(diǎn),首先絕大多數(shù)注釋是細(xì)節(jié)程度上的,基本上和代碼本身處于同一層次,因此我們需要看一看代碼本身是否比注釋更有權(quán)利。
            注釋的目的基本上是為了說明
            1:代碼實(shí)現(xiàn)中的權(quán)衡
            2。代碼本身的目的
            3:別的代碼使用該代碼的方法

            以Java舉例,注釋包括包注釋、類注釋和方法注釋。在99%的情況下,我認(rèn)為只有包注釋和類注釋才有意義,因?yàn)橐粋€包和
            類只有自己的名字來解釋自己的含義,如果是一個簡單的類,譬如說是Rectangle,當(dāng)然這個名字已經(jīng)說明了一切。但很多時候,
            一個類里面包含很多方法,很難簡單地用一個類名字來描述整個類的意圖和作用這個時候,這個時候代碼本身是不足的,需要類注釋的。

            對于方法層次上的注釋,除非你這個方法用了非常復(fù)雜的算法,那么我們最先關(guān)注的是它的目的,這個目的用方法的名字就足夠了,
            如果你認(rèn)為它有三個目的,或者有幾個階段,那你必須重構(gòu),直到達(dá)到這個目標(biāo)。這里代碼比注釋的好處是能夠優(yōu)化代碼本身的結(jié)構(gòu),
            易于重用和新變化,沒有同步的成本,更重要的是它是可執(zhí)行的。

            有的時候,例如內(nèi)部實(shí)現(xiàn)是錯誤的,我們需要修改代碼,這個時候我們也需要理解這個代碼地實(shí)現(xiàn)方式,但我認(rèn)為一旦達(dá)到了上面的要求,對一個程序員來講,代碼更精確、更簡單地能夠被理解,而不是注釋,除非注釋逐行解釋代碼地實(shí)現(xiàn)。

            至于別的代碼如何來使用你自己的代碼,我不由得回憶起當(dāng)初學(xué)習(xí)delphi地經(jīng)歷,在我使用一段delphi以后,我很多時候都是憑自己對delphi函數(shù)命名的習(xí)慣的猜測去調(diào)用一個個函數(shù),而不是依靠delphi地API文檔和delphi源代碼里面的注釋(實(shí)際上非常少),真的無法理解就去看源代碼。而對于一些我完全是初學(xué)的類或者函數(shù),我的做法首先是去尋找范例代碼理解函數(shù)調(diào)用的順序,至于這種理解是否正確
            最終取決于我自己的不斷測試。對于一些復(fù)雜的方法,我會在基本已經(jīng)理解,并且能夠使用的情況下再去看是否還有別的什么"訣竅",后門等等。因此,在這方面單元測試無疑比注釋更有用,但是如果一個方法確實(shí)比較復(fù)雜,并且不同地類和函數(shù)之間有一定的依賴關(guān)系,我們需要專門的API文檔,注釋根本做不到這一點(diǎn)。

            第二點(diǎn),注釋的成本。注釋無法驗(yàn)證,注釋不能執(zhí)行。因此,注釋必須完全通過手工來進(jìn)行維護(hù),當(dāng)一個類被重構(gòu)為一個類層次,
            當(dāng)一個方法被抽取成兩個方法,當(dāng)一個類的某些方法被移到另一個類,一個類地實(shí)現(xiàn)被改變(接口不變)的時候我們都必須手工去維護(hù)
            這些東西,并且無法知道我們的注釋到底是不是正確揭示了這個類、方法的意圖和實(shí)現(xiàn)思路。這個成本是非常高的,特別是當(dāng)我們
            知道注釋既不能為客戶提高更多的價值,也不會對其他程序員理解代碼有多大的幫助。當(dāng)然,如果我們有足夠的人力、物力愿意干這樣的活,有些時候也會稍微有點(diǎn)幫助。
            JAVAEYE上真是有不少明言警句啊, 看來都是高手。。。
            FROM JAVAEYE:
            閱讀有些test case只能讓你云里霧里,而閱讀有些則讓你馬上就知道這段代碼的用途。其實(shí)找并不是這些test case寫的有水平差別,而往往是有針對問題角度的差別。而進(jìn)一步,你會發(fā)現(xiàn)閱讀這些test case如果按照一定順序,就會從最初的動機(jī)到最終的實(shí)現(xiàn)細(xì)節(jié)都有一個清晰的理解,而如果我們能夠在寫這些test case的時候就標(biāo)注出這個理解順序,將是十分核算的。而實(shí)際上很多時候我們書寫的順序就是最終我們適于閱讀理解的順序。
            FROM JAVAEYE
            就是因?yàn)椤拔臋n/注釋”在代碼的頻繁修改中太容易過時,而且也太容易為人所忘記,所以在我的實(shí)踐中不寫文檔,我的文檔就是我的“代碼+單元測試”,想知道我的想法,看“代碼+單元測試”就行了,沒有任何形式的文檔比“代碼+單元測試”更能體現(xiàn)我的設(shè)計(jì)
            - 我們的文檔是十分簡短和松散的,一般放在wiki上,起到story guide的作用,但如上所說,隨著開發(fā)很快就過時了,從中你能找到設(shè)計(jì)的逐步迭代,但它和最終的產(chǎn)品是有差別的
            - 對于我們開發(fā)工程師來講,“代碼+單元測試”就是我們的文檔,對于客戶來講,有專門的產(chǎn)品文檔供他們使用,但是那是由文檔工程師寫的
            FROM JAVAEYE:
            對于大多數(shù)的中國的軟件開發(fā)團(tuán)隊(duì)來說,難以實(shí)現(xiàn)敏捷的最重要問題是人的素質(zhì)問題。一個敏捷團(tuán)隊(duì)要求每個成員都有較好的OOP和OOD的能力。.......實(shí)現(xiàn)敏捷是一個漸進(jìn)的過程。構(gòu)造一個在技術(shù)上有敏捷能力的團(tuán)隊(duì)有兩種方法,一是用足夠的錢去招聘有足夠能力的程序員(大部分企業(yè)沒有那么多錢)。二是將現(xiàn)有不符合敏捷技術(shù)要求的程序員培養(yǎng)為合格的敏捷工作者。而在培養(yǎng)的路上,單元測試正是一個很好的驅(qū)動方式和實(shí)踐平臺。
            @neoragex2002
            這個老兄還是對TDD有一個起碼的了解以后,再來討論這個問題吧。
            signal/slot機(jī)制正是在C++中解決這種問題比較好的辦法,可以看我的辦法:
            http://www.shnenglu.com/eXile/archive/2008/01/09/40782.html
            只要是原創(chuàng)的,發(fā)在幾個blog也無所謂啊,獨(dú)家不獨(dú)家的有什么關(guān)系呢
            謝謝,改過來了。
            http://www.javaeye.com/topic/5876
            關(guān)于文檔和注釋的討論
            http://www.javaeye.com/topic/6294
            關(guān)于文檔和注釋的討論
            而且你的這種實(shí)現(xiàn)存在死鎖的可能性, 即使不死鎖,也會使線程反復(fù)切換,效率不高
            這種辦法很容易導(dǎo)致寫?zhàn)囸I...
            一般來說寫的優(yōu)先級應(yīng)該比讀高一些
            修正了一個bug ( signal.h: 92)

            template<...>
            class signal
            {
            //....
            template <class T>
            void connect(SP_NS::shared_ptr<T> const& f)
            {
            _connect(slot_type(f.get()), f);
            }
            };
            沒大明白,有代碼就好了。。。
            @weiliang
            Re : 對象屬性 編輯控件 ?
            在qt solution中已實(shí)現(xiàn)了這種控件,安裝后即可使用
            不錯,有點(diǎn)吸引力
            另外, 保證你的模塊不出差錯, 不是靠文檔和注釋, 而是靠測試,
            文檔和注釋,也分兩種, 一種是給自己看的, 一種是給別人看的, 這兩種寫法是不一樣的,
            對于寫給自己看的文檔, 如果會影響開發(fā)進(jìn)度的話,為什么要寫它呢?這說明寫文檔的方法不對.
            我覺得, 好象你理解的設(shè)計(jì)總在變化這句話有偏差, 設(shè)計(jì)變化的原因主要有兩點(diǎn):
            1) 需求的變化, 主要是系統(tǒng)功能的改進(jìn), 擴(kuò)充, 版本的升級
            2) 需求的細(xì)化, 主要是需求本身不會考慮到所有的實(shí)現(xiàn)細(xì)節(jié), 在實(shí)現(xiàn)時才發(fā)現(xiàn)有設(shè)計(jì)不當(dāng)?shù)牡胤?
            這個問題, 稱之為重構(gòu).
            在沒有單元測試的保證下, 進(jìn)行重構(gòu)是一種危險的行為. 正如你說的一樣, 要指望不出問題, 那是奇跡. 這也不能怪軟件工程沒學(xué)好, 因?yàn)槲覀儗W(xué)的軟件工程本身就是有缺陷的.

            "把需求看好、文檔寫好、時間安排好,這才是硬道理…… "
            這是不對的, 設(shè)計(jì)的唯一不變的特點(diǎn)就是: 它總是在變化.
            --是不是有點(diǎn)有饒口 :) , 這是<<設(shè)計(jì)模式Head First>>中的一句話.
            所以我們做的, 是如何應(yīng)對變化.
            推薦看一下: <<重構(gòu),改善既有代碼的設(shè)計(jì)>>



            其實(shí)qmake很方便的,有了qmake,我都很少使用IDE了。
            個人認(rèn)為boost現(xiàn)有的signal 實(shí)現(xiàn)并不怎么樣, 應(yīng)該在下一個版本中有較大的更新。
            再來解釋一下,使用trackable是為了把它作為一個基類,trackable對象銷毀時,能自動斷開相關(guān)連接。而connection的設(shè)計(jì)是因?yàn)閎oost::function并不能也無法提供一致的相等性比較,所以用connection來管理slot 的連接。當(dāng)然設(shè)計(jì)的關(guān)鍵之處是還是要防止懸掛指針的出現(xiàn),所以slot管理器并不直接操作slot的實(shí)例。
            SQLite現(xiàn)在的版本可以加密了嗎?我好象在它的文檔里沒有找到相關(guān)說明啊?
            這篇文章說的還是socket編程的模型。
            使用ACE,主要用的還是Reactor或Proacoter框架,到那時,還認(rèn)為ACE不難的,那都是高手。。。
            re: python做界面?[未登錄] eXile 2007-12-11 14:12
            有一定道理。不過如果D再成熟一些的話,選擇D+wxD 也不錯。
            在c++中,應(yīng)用設(shè)計(jì)模式卻不使用智能指針,內(nèi)存管理遲早會變成一件極其痛苦的事情, 孟巖(?)甚至說在C++中不使用shared_ptr,就不要談面向?qū)ο笤O(shè)計(jì)。。。
            @力為
            呵呵,如果MFC也跨平臺,唯一的可能就是Windows已經(jīng)失去了大部分江山。。
            遺憾啊,對eXtreme 比較熟....
            @fr3@K
            這就要看CTest 是值語義還是指針語義了,對于指針語義,我覺得最好采用第二種接口類辦法,這樣概念上不會混淆,也便于將來派生新的功能。
            1)Adapter: 使風(fēng)格統(tǒng)一, 不受外來庫API的污染,
            使 2)Bridge:用beta版的lib開發(fā)軟件,或者是開發(fā)所依賴的庫有較大的可能 在軟件的生命期內(nèi)發(fā)生改變時,通常使用該模式
            這些確實(shí)需要有時間和實(shí)踐來理解,才能有深刻的體會。。。
            QSettings有它自己的序列化機(jī)制,要控制它的編碼方式,最好還是用自己的INI配置類吧。
            re: 漢語編程++ eXile 2007-10-18 17:44
            信息產(chǎn)業(yè)部教育中心總工程師沈林興把五筆字型輸入法、漢字激光照排系統(tǒng)和漢語編程作為漢字在計(jì)算機(jī)應(yīng)用中的三大里程碑,“而漢語編程更具革命性意義。”他欣喜地看到
            這一顛覆已經(jīng)悄然開始。

              近日,用漢語編程實(shí)現(xiàn)的數(shù)據(jù)庫開發(fā)環(huán)境將通過江蘇省科技廳的驗(yàn)收。按照進(jìn)程,漢語程序設(shè)計(jì)語言數(shù)據(jù)庫開發(fā)環(huán)境項(xiàng)目完成后一年,項(xiàng)目承擔(dān)方——南京漢語編程有限公司將以漢語編程數(shù)據(jù)庫教育版為推廣重點(diǎn)并進(jìn)行其他工程開發(fā)。項(xiàng)目完成后兩年,漢語編程數(shù)據(jù)庫標(biāo)準(zhǔn)版將以O(shè)EM方式與國內(nèi)PC制造商捆綁銷售。項(xiàng)目完成后三年,將推出漢語編程數(shù)據(jù)庫企業(yè)版參與政府、企業(yè)、部隊(duì)信息化建設(shè),部分替代進(jìn)口產(chǎn)品。

              江蘇省科技廳將對該項(xiàng)目投資三百萬元。

              同樣看好漢語編程的還有重慶市科委,他們的預(yù)期投資是上千萬。漢語編程作為重大科技發(fā)明發(fā)現(xiàn)正在申請重慶市的國家級項(xiàng)目。

              重慶藥監(jiān)局正在應(yīng)用漢語編程開發(fā)的數(shù)據(jù)庫實(shí)現(xiàn)對所有下屬藥店的監(jiān)管。目前這個項(xiàng)目完成了大部分,6月底將最后完工。

            re: 漢語編程++ eXile 2007-10-18 16:47
            不許笑,這個可曾經(jīng)是某政府投資幾千萬搞的項(xiàng)目, 據(jù)說是要搞中國人自己的編程語言。。。
            weak_ptr的主要目的是為了解決引用計(jì)數(shù)的循環(huán)引用問題
            boost 出于線程安全的考慮,并沒有為weak_ptr提供->重載或get方法,所以不能直接使用, 還得轉(zhuǎn)化成shared_ptr
            @xiehp@sohu.com
            這就是 it++ 和 ++it 的區(qū)別
            @missdeer
            那就應(yīng)該分析一下測試的環(huán)境. 看一下有連接時,無連接時, 局域網(wǎng)中, 公網(wǎng)中.
            asio本身帶的例子是很簡單的, 都是用法演示,最多也就服務(wù)器設(shè)定幾個線程.
            在局域網(wǎng)中進(jìn)行這樣的測試是沒有什么意義的.
            boost 的 thread 和asio都是有可能作為系統(tǒng)支持庫進(jìn)入std::tr2的.
            好人越來越多了.....
            剛準(zhǔn)備自己寫一個呢, 真是超爽啊, 太謝謝了....
            不錯不錯
            asio本身并不占用多少資源, 如果網(wǎng)絡(luò)連接數(shù)不多,但占用CPU很厲害, 那肯定時是自己寫的程序某個地方出了問題.
            至于Observer::update(void*)可以利用ObserverAdapter實(shí)現(xiàn)接口強(qiáng)制,再利用 std::tr1::tuple 之類的來彌補(bǔ)類型信息的不足
            發(fā)現(xiàn)這種設(shè)計(jì)還有兩個優(yōu)點(diǎn):
            (1)observer雖然用于解藕很不錯,但是在C++中,最大的問題是容易出現(xiàn)懸掛指針,而且出現(xiàn)后不易調(diào)試。這個實(shí)現(xiàn)在這一方面做得很不錯,可以最大限度的防止這類問題的出現(xiàn)。
            (2)由于定義了抽象接口,很容易擴(kuò)充為線程安全的實(shí)現(xiàn)
            不錯, 和我的做法一樣.
            re: D語言與C++[未登錄] exile 2007-09-14 18:12
            看來D的編譯速度已經(jīng)超出了某些人的想象極限.......
            re: D語言與C++[未登錄] exile 2007-09-14 18:10
            (1)http://qiezi.javaeye.com/blog/26685
            D語言編譯速度非常快(這也是Walter Bright對C++不滿的一個重要原因)。dsource.org中的mango項(xiàng)目包含755個D源文件,但在我的機(jī)器上編譯成.lib文件只需要4秒時間。
            (2)
            D is not a scripting language, nor an interpreted language. It doesn't come with a VM
            共5頁: 1 2 3 4 5 

            導(dǎo)航

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            統(tǒng)計(jì)

            常用鏈接

            留言簿(18)

            隨筆分類

            隨筆檔案

            服務(wù)器編程

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久亚洲私人国产精品vA| 人妻无码久久一区二区三区免费 | 久久久久久亚洲Av无码精品专口| 久久成人精品| 国产精品成人久久久久三级午夜电影| 久久精品国产亚洲av麻豆色欲| 国产精品99久久久精品无码| 午夜精品久久久久久久无码| 欧美久久久久久午夜精品| 久久精品国产一区二区| 久久精品中文字幕第23页| 久久WWW免费人成—看片| 久久国产精品免费一区| 内射无码专区久久亚洲| 婷婷国产天堂久久综合五月| 久久精品一区二区三区AV| 久久天天躁夜夜躁狠狠躁2022| 中文字幕热久久久久久久| 久久精品国产亚洲AV无码麻豆 | 久久精品国产第一区二区三区| 精品久久久久久无码专区不卡| av午夜福利一片免费看久久 | www亚洲欲色成人久久精品| 久久se这里只有精品| 国产69精品久久久久APP下载| 久久精品人人做人人爽电影蜜月| 色噜噜狠狠先锋影音久久| 深夜久久AAAAA级毛片免费看| 国产亚洲精品久久久久秋霞| 69SEX久久精品国产麻豆| 久久国产三级无码一区二区| 亚洲欧美成人久久综合中文网 | 国产精品久久久久久久午夜片| 久久久久久久免费视频| 久久精品免费观看| 久久人人爽人人人人片av| 99久久精品费精品国产| 人人妻久久人人澡人人爽人人精品 | 性高湖久久久久久久久AAAAA| 久久精品国产亚洲精品2020 | 久久精品99久久香蕉国产色戒|