• <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>
            posts - 319, comments - 22, trackbacks - 0, articles - 11
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            為什么我要把公司做成扁平型

            本文是從 Why I Run a Flat Company 這篇文章翻譯而來(lái)。 
            譯者提示:本文中所提到的37signals是一家在西方很有知名度的公司,它是Ruby On Rails這個(gè)框架發(fā)祥地。

            我一直在保持公司組織結(jié)構(gòu)上層級(jí)體系的最小化。當(dāng)有一個(gè)員工說(shuō)出“晉升我吧”,我不得不重新評(píng)估公司的組織結(jié)構(gòu)。

            爬樓梯

            幾個(gè)月前,公司里發(fā)生了一些奇怪的事情:我們放棄了一個(gè)員工。這種事情在我創(chuàng)辦的37signals這家芝加哥軟件公司里并不常見(jiàn)。在過(guò)去的11年里,我們僅損失了5個(gè)人——其中還有個(gè)人在離開(kāi)了7年后又回來(lái)了。

            但這里真正奇怪的事情是這位員工和我一起決定在此時(shí)辭去的原因。問(wèn)題出自志向抱負(fù)上——不是缺乏,而是過(guò)剩,我們無(wú)法接受。

            她在我們的客戶服務(wù)部已經(jīng)做了差不多3年,工作一直很優(yōu)秀。她聰明,主動(dòng)積極,工作有效率,從未出過(guò)問(wèn)題。現(xiàn)在,她希望獲得管理職務(wù)、一個(gè)新的頭銜,作為她這種表現(xiàn)的獎(jiǎng)賞。這不是薪水待遇方面的問(wèn)題。

            你可能感到奇怪,這種事情怎么會(huì)成為了一個(gè)問(wèn)題。畢竟,哪一個(gè)公司老板不想讓自己的公司里多些希望能多承擔(dān)更多工作的有積極性的員工呢?事實(shí)上,很多公司都經(jīng)常的想辦法多發(fā)明一些職位、職責(zé)、工作頭銜,來(lái)留住他們的最有抱負(fù)的員工。

            然而,在 37signals,我們對(duì)志向抱負(fù)有不同的立場(chǎng)。我們對(duì)那種、我認(rèn)為是“垂直型”發(fā)展的志向報(bào)復(fù)并不多感興趣—— 那是我們最常見(jiàn)的職業(yè)發(fā)展軌跡——一個(gè)員工從入職開(kāi)始向上爬梯子,在多年的工作中從新員工爬上經(jīng)理職務(wù),爬到副總裁。相反,我們推崇“水平型”的志向發(fā)展方向——在這種情況下,當(dāng)員工喜歡他們所做的工作時(shí),我們會(huì)鼓勵(lì)他深入研究,擴(kuò)展他的知識(shí)面,讓他在這方面越來(lái)越強(qiáng)。我們一直在努力招到一些渴望成為技術(shù)高手的人,也就是那些希望成為大師級(jí)設(shè)計(jì)師的設(shè)計(jì)人員,想精通編程技術(shù)而不是管理工作的開(kāi)發(fā)人員。

            相對(duì)于給予更高的管理職位作為獎(jiǎng)賞——這樣通常會(huì)把這些人從他們實(shí)際擅長(zhǎng)的工作崗位上移走——我們獎(jiǎng)賞跟他們的工作相關(guān)的東西。我們同時(shí)會(huì)提供高于市場(chǎng)水平的薪水和豐富的福利,包括夏天每周4天工作日,假期想休多少天都可以(當(dāng)然,要有理由),在他們正在做的項(xiàng)目上給予他們充分的自主決策權(quán)。

            這種策略我們使用了多年,效果很好。但最近,因?yàn)槲覀冋腥肓烁嗟娜耍@種模式開(kāi)始顯現(xiàn)不適應(yīng)的跡象。我們現(xiàn)在是26個(gè)人。就像很多企業(yè)家都知道的,一旦你的公司達(dá)到一定規(guī)模,以前你不會(huì)太注意的事情現(xiàn)在就變得不可忽視了。在我們公司現(xiàn)在這種情況里,諸如”部門”,“經(jīng)理”,“頭銜”的人力資源術(shù)語(yǔ)開(kāi)始平凡的出現(xiàn)了。

            除了要保持小規(guī)模,37signals一直在保持一個(gè)扁平型的組織結(jié)構(gòu)。事實(shí)上,扁平化是我們的一個(gè)核心理念。我們有8個(gè)開(kāi)發(fā)人員,但我們沒(méi)有首席技術(shù)師。我們有5個(gè)設(shè)計(jì)人員,但我們沒(méi)有創(chuàng)意總監(jiān)。我們的客戶支持團(tuán)隊(duì)里有5個(gè)人,但沒(méi)有客戶支持經(jīng)理。而且因?yàn)槲覀儧](méi)有市場(chǎng)部,我們沒(méi)有首席營(yíng)銷主管。

            即使我們規(guī)模擴(kuò)大了,我們?nèi)匀痪S持著一個(gè)干癟的組織結(jié)構(gòu)。我們沒(méi)有任何空間留給沒(méi)有實(shí)際工作的人。在37signal的每個(gè)人幾乎都跟我們產(chǎn)品的某些東西有直接的關(guān)系。從編寫員編寫和更新支持文檔,到設(shè)計(jì)人員設(shè)計(jì)用戶界面,到程序員給使用用戶開(kāi)發(fā)代碼,他們都在盡自己的職責(zé),我們沒(méi)有一個(gè)拿著薪水只是去告訴別人去做什么的議院議員。

            我們?cè)鲞^(guò)實(shí)驗(yàn),把一部分人提升到管理層。在某些方面,這樣做有好處;但另外一些方面,這樣有問(wèn)題。其中我們發(fā)現(xiàn)的一個(gè)問(wèn)題就是,讓團(tuán)隊(duì)自己管理自己通常比讓團(tuán)隊(duì)受另外一個(gè)人管理要好。所以,當(dāng)組織需要建設(shè)的時(shí)候,我們通常讓他們自己去處理。

            例如,當(dāng)我們還是只有3個(gè)人在客戶服務(wù)處的時(shí)候,我們招募了一個(gè)人去管理這個(gè)團(tuán)隊(duì)。這個(gè)人的職責(zé)是審查每個(gè)人的工作表現(xiàn),注意他們的語(yǔ)氣,確保我們的客戶能得到迅速和正確的回復(fù),并和我們的開(kāi)發(fā)人員交流,讓他們知道客戶的需求,評(píng)估我們整個(gè)支持的執(zhí)行效果。他也許可以投入到客服工作中,解決一些客戶問(wèn)題。但他的主要職責(zé)是退出前線、改進(jìn)整個(gè)部門的工作。

            效果不好。這并不是對(duì)某個(gè)經(jīng)理的問(wèn)責(zé)(他是個(gè)很棒的家伙,知道如何去管理一個(gè)部門,我們希望他能找到其它合適的工作)。關(guān)鍵問(wèn)題不是誰(shuí)在這個(gè)角色職位上;這個(gè)角色職位本身是沒(méi)必要的。因?yàn)槲覀兿M@個(gè)部門能夠成長(zhǎng),所以我們就以為適當(dāng)?shù)恼{(diào)整現(xiàn)有組織機(jī)構(gòu)是個(gè)好主意。畢竟,誰(shuí)都知道,當(dāng)你增加人手時(shí),你就擴(kuò)大了組織。

            我們從這件事情中學(xué)的的教訓(xùn)是,增加一個(gè)專職經(jīng)理、創(chuàng)造出上下級(jí)關(guān)系并不是建設(shè)你的組織的唯一途徑。相反,我們決定讓這個(gè)團(tuán)隊(duì)完全的自主管理自己。仍然會(huì)有一個(gè)團(tuán)隊(duì)領(lǐng)導(dǎo),但這個(gè)角色是在整個(gè)團(tuán)隊(duì)人員中每周輪流輪換的。每周,新團(tuán)隊(duì)領(lǐng)導(dǎo)會(huì)勾勒出這周的議事日程,把問(wèn)題和完成的任務(wù)寫成報(bào)告,進(jìn)入第一線來(lái)解決跟客戶交流中遇到的各種問(wèn)題。

            我喜歡這種安排的一個(gè)原因是,它解決了常見(jiàn)的非常有害的管理者和勞動(dòng)者之間的沖突,在這樣的安排中,兩種角色的人都能體驗(yàn)到對(duì)方角色的狀況。你會(huì)發(fā)現(xiàn)公司中的很多沖突都是因?yàn)閷?duì)相互的職務(wù)不了解產(chǎn)生的。因?yàn)檫@種每周的輪流管理,每個(gè)人都更能體諒其他人的處境。當(dāng)你知道你很快就會(huì)被管理時(shí),你就會(huì)更注意你的管理工作了。這讓我想起一句最喜歡的名言、哲學(xué)家John Rawls說(shuō)的:“最公平的規(guī)則是讓那些不知道自己該有多大權(quán)利的人都同意的規(guī)則。(The fairest rules are those to which everyone would agree if they did not know how much power they would have.)”我們的客戶支持工作上了一個(gè)新臺(tái)階,我們的客戶比以前更滿意了。我們對(duì)比了以前和現(xiàn)在的不同,我們知道現(xiàn)在是對(duì)的。

            對(duì)客服服務(wù)團(tuán)隊(duì)的工作表現(xiàn)的觀察,使我想到了橫向激勵(lì)而不是豎向激勵(lì)會(huì)使每個(gè)人都受益。把有志向的人往上層推實(shí)際上是阻擋了團(tuán)隊(duì)里其他有能力的人。當(dāng)有三、四個(gè)人都有管理能力(按傳統(tǒng)的說(shuō)法),如果只晉升其中的一位,團(tuán)隊(duì)氣氛就會(huì)陷入困境。我們更喜歡一個(gè)所有人都能融洽相處的環(huán)境,讓每個(gè)人都能有機(jī)會(huì)在橫向上自豪的完全的發(fā)展。

            最后我要說(shuō)的是,當(dāng)一個(gè)員工離開(kāi)時(shí)大家都很不高興。但作為一個(gè)公司老板,我必須去考慮公司的長(zhǎng)遠(yuǎn)發(fā)展。只是因?yàn)樗蛩哂谐隽爽F(xiàn)有的職位的能力就讓其升上管理職位,這理由還不夠充分。增設(shè)管理職位對(duì)于一個(gè)扁平型的公司來(lái)說(shuō)實(shí)際是宣判了公司文化向等級(jí)制度的妥協(xié)。目前我們絕對(duì)沒(méi)有這樣的想法。我希望永遠(yuǎn)都不會(huì)有。

            跟很多故事一樣,我們的故事也有了一個(gè)完美的結(jié)局。我們的這位走掉的員工沒(méi)有找到合適的工作——她創(chuàng)辦了自己的公司。她管理整個(gè)公司,忙得不亦樂(lè)乎。我們還給她提了建議、幫助宣傳她的新業(yè)務(wù)。對(duì)任何人來(lái)說(shuō)這都是一個(gè)絕對(duì)正確的發(fā)展方向。

            Jason-Fried
            本文作者Jason Fried是37signals這個(gè)芝加哥軟件公司的創(chuàng)始人之一,他也是《Rework》(中文版《重來(lái)》)這本書(shū)的合著者。

            posted @ 2011-05-04 07:17 RTY 閱讀(169) | 評(píng)論 (0)編輯 收藏

            六種最具視覺(jué)效果的Android(安卓)手機(jī)瀏覽器

            本文是從 Six Browsers For Most Intuitive Web Surfing Experience On Your Android Phone 這篇文章翻譯而來(lái)。

            Android手機(jī)上有很多各種各樣的應(yīng)用軟件,但想找到免費(fèi)且好用的可不容易。這就是為什么今天我要向大家分享這六款最具視覺(jué)效果的android手機(jī)瀏覽器的原因。讀一下每個(gè)瀏覽器的特點(diǎn),看哪款最適合你。

            Dolphin(海豚)瀏覽器HD版

            Dolphin(海豚) HD瀏覽器是Android市場(chǎng)上最受歡迎和最強(qiáng)大的瀏覽器,它支持Android 2.0以上版本。除了一些諸如手勢(shì)命令、多觸點(diǎn)縮放、書(shū)簽(同步谷歌書(shū)簽)等基本功能外,Dolphin HD瀏覽器還支持很多像插件、HTML5、書(shū)簽自定義排序、新穎的界面效果、更改下載目錄等高級(jí)功能。

            Opera移動(dòng)瀏覽器

            這是一個(gè)很快、很流暢的瀏覽器,能讓你在移動(dòng)設(shè)備上的上網(wǎng)沖浪具有前所未有的樂(lè)趣和效率。重新設(shè)計(jì)過(guò)的用戶界面在手機(jī)中看起來(lái)更漂亮,使你的手機(jī)具有一個(gè)時(shí)髦的、很現(xiàn)代的顯示外觀。捏擠縮放和平滑的場(chǎng)景切換效果給你的互聯(lián)網(wǎng)沖浪一個(gè)自然的、直觀的感受。你還可以使用它把網(wǎng)頁(yè)內(nèi)容分享到其它的社交網(wǎng)站和網(wǎng)絡(luò)上。Opera移動(dòng)瀏覽器是連接WiFi網(wǎng)絡(luò)和無(wú)線寬帶的最佳瀏覽器。

            Miren 瀏覽器

            Miren瀏覽器通過(guò)對(duì)標(biāo)簽頁(yè)瀏覽+智能全屏模式、頂部網(wǎng)站導(dǎo)航、智能提示等功能的支持,使你具有最直觀的沖浪體驗(yàn)。這是一個(gè)支持Flash、多觸點(diǎn)捏擠縮放功能的瀏覽器。它采用很方便的文件夾形式書(shū)簽管理方式,讓你更好的管理書(shū)簽、通過(guò)SD導(dǎo)出、導(dǎo)入書(shū)簽。

            Skyfire瀏覽器

            Skyfire瀏覽器能讓你具有更豐富、更智能、更有趣的移動(dòng)web沖浪體驗(yàn)。它還能讓你的瀏覽活動(dòng)更具社交化。你可以輕易的通過(guò)它來(lái)訪問(wèn)Facebook和Twitter上的新聞?dòng)嗛啠瑐€(gè)人簡(jiǎn)介,朋友情況,收件箱,事件提醒和地點(diǎn)位置情況。它能通過(guò)你正在訪問(wèn)的網(wǎng)址來(lái)幫你發(fā)現(xiàn)朋友共享出來(lái)的流行網(wǎng)頁(yè)內(nèi)容,發(fā)現(xiàn)相關(guān)的信息。它能在你的視頻和社交搜索結(jié)果是提供你更多的信息。

            Opera Mini 瀏覽器

            通過(guò)使用Opera服務(wù)器對(duì)網(wǎng)頁(yè)進(jìn)行壓縮,Opera Mini瀏覽器不僅在加載網(wǎng)頁(yè)速度上更快,而且能比普通瀏覽器節(jié)省九成的數(shù)據(jù)量。Opera Mini瀏覽器是在慢速的或按流量計(jì)費(fèi)的網(wǎng)絡(luò)上的最優(yōu)選擇。

            Boat瀏覽器

            Boat瀏覽器是一個(gè)快速的、簡(jiǎn)潔易用的Android瀏覽器。非常簡(jiǎn)潔和漂亮,能給你在Android上的web沖浪帶來(lái)最優(yōu)的用戶體驗(yàn)。

            posted @ 2011-05-04 07:14 RTY 閱讀(325) | 評(píng)論 (0)編輯 收藏

            你真正需要的代碼測(cè)試覆蓋率是多少?

            本文是從 How much code coverage do you really need? 這篇文章翻譯而來(lái)。

            我寫這篇文章的起因是由于看了@unclebobmartin在微博上的一些看起來(lái)言之鑿鑿的話語(yǔ)。給那些不認(rèn)識(shí)Uncle Bob的人介紹一下——他是我們軟件產(chǎn)業(yè)里最著名的一個(gè)專家,是《 Clean Code(代碼整潔之道)》這本著作的作者,是敏捷宣言(Agile Manifesto)的簽署人之一。在上世紀(jì)九十年代,他對(duì)文獻(xiàn)最佳面向?qū)ο髮?shí)踐方法貢獻(xiàn)了很大的力量。所以,當(dāng)他說(shuō)話時(shí),我們一定要關(guān)注一下。

            他給我們?nèi)粘5腡DD和單元測(cè)試制訂了一個(gè)最高綱領(lǐng)。我們可以從他的微博里清楚的看到這點(diǎn):

            “兩件事。可重復(fù)性和成本。跟自動(dòng)化測(cè)試比起來(lái),手工測(cè)試的成本高的可怕。”

            “手工測(cè)試不是測(cè)試;那是在做實(shí)驗(yàn)。只要有人的因素牽涉其中,那結(jié)果就必然可疑。”

            “你們告訴我的實(shí)際意思就是讓我大開(kāi)方便之門、不去測(cè)試某些程序。哼 …”

            “代碼覆蓋率100%并不是成績(jī),那是最低要求。即使只寫了一行代碼,你也要測(cè)試它。”

            他接著把軟件測(cè)試跟在其它領(lǐng)域里常見(jiàn)的但被認(rèn)為很關(guān)鍵的活動(dòng)進(jìn)行了比較:

            “戰(zhàn)地外科醫(yī)生也許沒(méi)有最夠的時(shí)間做嚴(yán)格的消毒,但這帶來(lái)的風(fēng)險(xiǎn)可能是死亡或高昂的治療代價(jià)。”

            “會(huì)計(jì)難道只會(huì)把80%的數(shù)據(jù)表做雙份備份嗎?”

            “有多少回你們都看到了那些嚴(yán)重的宕機(jī)事故都是因?yàn)橐恍┯薮赖某绦騿T以為那些愚蠢的代碼不需要經(jīng)過(guò)測(cè)試而導(dǎo)致的?“

            他的所有這些觀點(diǎn)都很有價(jià)值,但他只向我們展示了問(wèn)題的一面。現(xiàn)實(shí)中并不是所有的應(yīng)用都需要如此謹(jǐn)小慎微的測(cè)試。并不是所有的應(yīng)用都跟戰(zhàn)地手術(shù)或巨額資金核算那么重要。(更不要說(shuō)在很多情況下的為”合理避稅“而做的帳務(wù):))。

            一個(gè)更重要的原因是,100%的測(cè)試覆蓋率并不能保證bug的不出現(xiàn)。就連Uncle Bob自己也承認(rèn):

            ”測(cè)試并不能杜絕bug。但測(cè)試能保證程序的行為是符合預(yù)期的。“

            這很顯然指的是:同一個(gè)程序員在程序里埋下的概念性或邏輯性錯(cuò)誤,由他自己測(cè)是絕對(duì)測(cè)不出來(lái)的。

            最終,所有的問(wèn)題歸結(jié)于ROI(投資收回率)和實(shí)用主義。有些應(yīng)用比其它應(yīng)用需要更多的測(cè)試。有些bug需要比其它bug投入更多的精力去修復(fù)。 究竟是否需要在自動(dòng)化測(cè)試是投入更多的時(shí)間和財(cái)力,或多少覆蓋率是合適的還是過(guò)分了,這都需要人的主觀判斷。

            posted @ 2011-05-04 07:11 RTY 閱讀(249) | 評(píng)論 (0)編輯 收藏

            你去創(chuàng)業(yè)太老了

            本文是從 But You're to Old to do a Startup 這篇文章翻譯而來(lái)。

            這么說(shuō),當(dāng)你過(guò)了30歲,再來(lái)經(jīng)營(yíng)或創(chuàng)辦一個(gè)企業(yè)就顯的有點(diǎn)老了嗎?超過(guò)30就意味著你不再有激情、驅(qū)動(dòng)力和決心了嗎?

            papa-smurf

            怎么算我也不老,我才34歲,但對(duì)于創(chuàng)業(yè)世界里的人來(lái)說(shuō),我似乎是就應(yīng)該坐在某個(gè)企業(yè)的辦公室里同跟我相仿年紀(jì)的人上班。年輕就容易創(chuàng)業(yè)嗎?的確,當(dāng)你年輕時(shí),跌倒了更容易爬起來(lái),失敗了更容易重新再來(lái)。但不管怎么說(shuō),這也不能表明只有在年輕時(shí)才可以創(chuàng)業(yè)。

            如今的年代是一個(gè)前所未有的創(chuàng)業(yè)好時(shí)機(jī)。你無(wú)需一個(gè)辦公室,互聯(lián)網(wǎng)可以讓你和全世界所有的自由職業(yè)者聯(lián)系起來(lái),開(kāi)源軟件提供了你高質(zhì)量的微軟產(chǎn)品的替代物,大量的便宜的主機(jī)提供商提供你選擇。有不計(jì)其數(shù)的閱讀材料能教你如何起步入手;你甚至能在線填報(bào)申請(qǐng)來(lái)聯(lián)合組成公司。

            通過(guò)學(xué)習(xí)各種創(chuàng)業(yè)知識(shí)技巧,你可以最小化發(fā)展客戶過(guò)程中的各種風(fēng)險(xiǎn)、以最小的成本生產(chǎn)出滿意的產(chǎn)品。

            但是,如果你也像我一樣,有兩個(gè)孩子,一筆抵押貸款,養(yǎng)一輛車,一筆助學(xué)貸款,各種日常消費(fèi),等等…!!我可不敢把話說(shuō)死!但你要知道,這只是你前進(jìn)道路上的障礙,你要解決它們,風(fēng)險(xiǎn)肯定會(huì)有。

            最近我和Noah Kagan有一次談話,關(guān)于我的家里個(gè)人勸我向另外一個(gè)方向發(fā)展。一個(gè)新成立的公司愿意提供我一個(gè)職位,做他們IT部門的負(fù)責(zé)人,薪水很高,公司運(yùn)營(yíng)的也不錯(cuò)。家里人說(shuō)我應(yīng)該有個(gè)穩(wěn)定的收入,給家人留下更多一起相處的時(shí)間,我欠家人很多。但Noah給了我一些很好的思考,例如,兩個(gè)方向,哪一個(gè)是我更喜歡的?如果選了一種不喜歡的工作會(huì)怎樣?每天早上,當(dāng)睜開(kāi)眼后,我想做什么?想干什么?

            做事必然會(huì)有風(fēng)險(xiǎn)。我可以接受這份工作,把無(wú)數(shù)的時(shí)間花在別人的產(chǎn)品上。或者我做我自己的公司,那是我的激情所在,是我每天醒來(lái)后就能享受的事情。沒(méi)有完美的事情,在公司你可能被解雇、被炒,創(chuàng)業(yè)有可能會(huì)失敗或成功。

            熱情和決心沒(méi)有年齡的限制!

            在創(chuàng)業(yè)公司使用Lean或敏捷開(kāi)發(fā)方法,你可以快速的獲得經(jīng)驗(yàn),快速的調(diào)整,降低風(fēng)險(xiǎn)。你的選擇是什么?我是一個(gè)真正的信仰者,相信無(wú)論你想做什么,或正在做什么,你必須努力做到最好。不要讓投資者們、其他企業(yè)家或任何其他人對(duì)你說(shuō)你不行或你太老了。你的成功你自己決定。

            posted @ 2011-05-04 07:09 RTY 閱讀(177) | 評(píng)論 (0)編輯 收藏

                 摘要: IonMonkey是Mozilla的新JavaScript JIT編譯器,旨在為SpiderMonkey JavaScript引擎引入新的優(yōu)化手段。 InfoQ 采訪了IonMonkey首席開(kāi)發(fā)者David Anderson,討論了其進(jìn)展,及它為使用SpiderMonkey引擎的產(chǎn)品如Firefox、Thunderbird、Adobe Acrobat和MongoDB所帶來(lái)的性能進(jìn)步。 ...  閱讀全文

            posted @ 2011-05-04 07:05 RTY 閱讀(412) | 評(píng)論 (0)編輯 收藏

            本文是從 S.O.L.I.D. Class Design Principles 這篇文章翻譯而來(lái)。


            本文是由敏捷宣言簽署人之一、《 Clean Code(代碼整潔之道)》一書(shū)的作者Robert C. Martin為他的《Applying Principles and Patterns》這本書(shū)搜集整理而來(lái)。

            單一責(zé)任原則(SRP)

            只有一個(gè)理由去修改一個(gè)類。例如,如果一個(gè)業(yè)務(wù)規(guī)則的改變會(huì)導(dǎo)致這個(gè)類的修改,那么,數(shù)據(jù)庫(kù)、界面、報(bào)表格式或系統(tǒng)任何其它的部分的改變都不該迫使這個(gè)類做修改。

            開(kāi)發(fā)/關(guān)閉原則(OCP)

            軟件構(gòu)成(類,模塊,方法等)向擴(kuò)展行為開(kāi)放,向修改行為關(guān)閉。

            Liskov替換原則(LSP)

            子類必須能夠用來(lái)當(dāng)作基類使用。如果類A繼承類B,任何能使用A的地方,B也同樣可以使用。例如,是否還記得,正方形可以看作是矩形!當(dāng)進(jìn)行擴(kuò)展 時(shí):前提條件不許繞過(guò),后置條件不能放寬限制,可見(jiàn)常量不能被修改(?)。常量:在擴(kuò)展之前或之后,用戶都需要依靠這個(gè)常量來(lái)傳遞信息。正確的使用set 形式的繼承關(guān)系。不遵守set語(yǔ)義是非常危險(xiǎn)的。歸納:使用超類的引用的任何上下文中也可以使用其子類的引用替代。這個(gè)原則極大的限制了在純擴(kuò)展(繼承) 機(jī)制里可以做的事情。不遵守會(huì)帶來(lái)風(fēng)險(xiǎn)。

            接口分離原則(ISP)

            一個(gè)類對(duì)另一個(gè)類的依賴應(yīng)該限制在最小化的接口上。

            反向依賴原則(DIP)

            依賴抽象層(接口),而不是具體類。

            其它重要原則

            Demeter定律

            也被稱做封鎖信息原則:只跟朋友交流

            一個(gè)對(duì)象O的任何一個(gè)方法M只能調(diào)用下列類型的對(duì)象的方法:

            • 它自己
            • 它的參量
            • 它創(chuàng)建/實(shí)例化的對(duì)象
            • 它的直接組件對(duì)象

            參考

            好萊塢原則

            不要調(diào)用我,我會(huì)調(diào)用你的。

            不要自我重復(fù)(DRY)

            去掉重復(fù)代碼。

            對(duì)接口編程,而不是對(duì)實(shí)現(xiàn)

            反向依賴的另外一種說(shuō)法。

            你不需要它(YAGNI)

            不要添加你“認(rèn)為以后可能有用”的代碼。只在“事到臨頭”時(shí)才添加代碼。

            簡(jiǎn)單化,傻瓜化(KISS)

            讓它能工作的最簡(jiǎn)單的方法是什么?

            posted @ 2011-05-04 06:58 RTY 閱讀(193) | 評(píng)論 (0)編輯 收藏

            版權(quán)聲明:http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html

            如何為代碼選擇開(kāi)源許可證,這是一個(gè)問(wèn)題。

            世界上的開(kāi)源許可證,大概有上百種。很少有人搞得清楚它們的區(qū)別。即使在最流行的六種----GPLBSDMITMozillaApacheLGPL----之中做選擇,也很復(fù)雜。

            烏克蘭程序員Paul Bagwell,畫(huà)了一張分析圖,說(shuō)明應(yīng)該怎么選擇。這是我見(jiàn)過(guò)的最簡(jiǎn)單的講解,只用兩分鐘,你就能搞清楚這六種許可證之間的最大區(qū)別。

            下面是我制作的中文版,請(qǐng)點(diǎn)擊看大圖。

            (完)

            posted @ 2011-05-02 21:59 RTY 閱讀(204) | 評(píng)論 (0)編輯 收藏

            1、示例代碼

            1        QtCore.QTimer.singleShot(self.delaySpinBox.value() * 1000,
            2                self.shootScreen)

            2、關(guān)于QTimer.singleShot 的用法

            void QTimer::singleShot ( int msec, QObject * receiver, const char * member ) [static]

            This static function calls a slot after a given time interval.

            It is very convenient to use this function because you do not need to bother with a timerEvent or create a local QTimer object.

            Example:

             #include <QApplication>
            #include <QTimer>
            int main(int argc, char *argv[])
            {
            QApplication app(argc, argv);
            QTimer::singleShot(600000, &app, SLOT(quit()));
            ...
            return app.exec();
            }

            This sample program automatically terminates after 10 minutes (600,000 milliseconds).

            The receiver is the receiving object and the member is the slot. The time interval is msec milliseconds.

            Note: This function is reentrant.

            See also setSingleShot() and start().

            posted @ 2011-05-01 13:21 RTY 閱讀(2310) | 評(píng)論 (0)編輯 收藏

            本文由程序猿What is the single most influential book every programmer should read?翻譯而來(lái)。

            國(guó)外知名網(wǎng)站stackoverflow上有一個(gè)問(wèn)題調(diào)查: 哪本書(shū)是對(duì)程序員最有 影響、每個(gè)程序員都該閱讀的書(shū)?

            這個(gè)調(diào)查已歷時(shí)兩年,目前為止吸引 了153,432人訪問(wèn),讀者共推薦出了478本書(shū)(還在增加),其中最火的一本 書(shū)《Code Complete》被頂了1306次。

            如果你是個(gè)程序猿,你一定有興 趣看看這些書(shū)里你都看過(guò)幾本,如果你一本沒(méi)看過(guò)的話,我也不好說(shuō)什么 ,也許你是個(gè)天才,但我相信大多數(shù)人都知道,你在學(xué)校里根本學(xué)不到什 么真正的工作中需要的知識(shí),我們畢業(yè)后能幫助我們?cè)诠局袆偃喂ぷ鞯?老師就是這些優(yōu)秀的書(shū)籍,一本好書(shū)可以改變一個(gè)人的一生。

            下面是這個(gè)調(diào)查中排名靠前的書(shū)的一個(gè)簡(jiǎn)單的清單:

            第一名:1306票《Code Complete (2nd Ed) by Steve McConnell》,中文版《代碼大全(第二版)》,兩屆Software Jolt Award震撼大獎(jiǎng)得主!

            程序猿,程序員都該閱讀的書(shū)

            第二名:1161票 《The Pragmatic Programmer》,中文版《程序員修煉之道》

            程序猿,程序員都該閱讀的書(shū)

            第三名:689票 《Structure and Interpretation of Computer Programs》,中文版《計(jì)算機(jī)程序的構(gòu)造和解釋》

            程序猿,程序員都該閱讀的書(shū)

            第四名:557票 《The C Programming Language》,中文版《C程序設(shè)計(jì)語(yǔ)言》

            程序猿,程序員都該閱讀的書(shū)

            第五名:472票 《Refactoring: Improving the Design of Existing Code》,中文版《重構(gòu):改善既有代碼的設(shè)計(jì)》

            程序猿,程序員都該閱讀的書(shū)

            第六名:472票 《Introduction to algorithms》,中文版《算法導(dǎo)論》

            程序猿,程序員都該閱讀的書(shū)

            第七名:430票 《The Mythical Man-Month》,中文版《人月神話》

            程序猿,程序員都該閱讀的書(shū)

            第八名:426票 《Design Patterns》,中文版《設(shè)計(jì)模式》

            程序猿,程序員都該閱讀的書(shū)

            第九名:386票 《The Art of Computer Programming(First Volume Hardcover)》,中文版《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)第 (第一卷)》

            程序猿,程序員都該閱讀的書(shū)

            第10名:353票 《Compilers: Principles, Techniques, and Tools 》,中文版《編譯原理》

            程序猿,程序員都該閱讀的書(shū)

            第11名:329票 《Head-First Design Patterns》,中文版《Head First 設(shè)計(jì)模式》

            程序猿,程序員都該閱讀的書(shū)

            也許,這里的排名并不具有什么權(quán)威性,但絕對(duì)可以說(shuō)都是好書(shū)!

            這11本外還有很多書(shū)雖然票數(shù)不是那么多,但大家估計(jì)都耳熟能詳,比如《Effective C++》(中文版《Effective C++:改善程序與設(shè)計(jì)的55個(gè)具體做法》),《Clean Code》(中文版《代碼整潔之道》),《Effective Java》(中文版《Effective Java中文版(第2版)》等 。

            記得有位先哲曾說(shuō)過(guò):

            一種編程語(yǔ)言的重要性并不在于語(yǔ)言本身,而是在于這種語(yǔ)言來(lái)體現(xiàn)出來(lái)的編程思維模式。所以說(shuō),并不是你用到的書(shū)才去讀,讀書(shū)是一種習(xí)慣。

            posted @ 2011-05-01 10:38 RTY 閱讀(259) | 評(píng)論 (0)編輯 收藏

            1. 示例代碼

            1        self.screenshotLabel.setPixmap(self.originalPixmap.scaled(
            2                self.screenshotLabel.size(), QtCore.Qt.KeepAspectRatio,
            3                QtCore.Qt.SmoothTransformation))

            2. Label 的 setPixmap函數(shù)說(shuō)明

            pixmap : QPixmap

            This property holds the label's pixmap.

            If no pixmap has been set this will return 0.

            Setting the pixmap clears any previous content. The buddy shortcut, if any, is disabled.

            Access functions:

            const QPixmap * pixmap () const
            void setPixmap ( const QPixmap & )

            3. 對(duì)QPixmap的scaled函數(shù)的解析

            QPixmap QPixmap::scaled ( const QSize & size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationModetransformMode = Qt::FastTransformation ) const

            Scales the pixmap to the given size, using the aspect ratio and transformation modes specified by aspectRatioMode and transformMode.

            • If aspectRatioMode is Qt::IgnoreAspectRatio, the pixmap is scaled to size.
            • If aspectRatioMode is Qt::KeepAspectRatio, the pixmap is scaled to a rectangle as large as possible inside size, preserving the aspect ratio.
            • If aspectRatioMode is Qt::KeepAspectRatioByExpanding, the pixmap is scaled to a rectangle as small as possible outside size, preserving the aspect ratio.

            If the given size is empty, this function returns a null pixmap.

            In some cases it can be more beneficial to draw the pixmap to a painter with a scale set rather than scaling the pixmap. This is the case when the painter is for instance based on OpenGL or when the scale factor changes rapidly.

            See also isNull() and Pixmap Transformations.

            QPixmap QPixmap::scaled ( int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationModetransformMode = Qt::FastTransformation ) const

            This is an overloaded function.

            Returns a copy of the pixmap scaled to a rectangle with the given width and height according to the given aspectRatioMode and transformMode.

            If either the width or the height is zero or negative, this function returns a null pixmap.

            posted @ 2011-04-29 23:02 RTY 閱讀(742) | 評(píng)論 (0)編輯 收藏

            僅列出標(biāo)題
            共31頁(yè): First 23 24 25 26 27 28 29 30 31 
            久久综合给合久久狠狠狠97色69| 久久综合九色欧美综合狠狠| 久久久久久久91精品免费观看| 国产精品久久毛片完整版| www亚洲欲色成人久久精品| 青春久久| 亚洲国产精品无码久久一区二区 | 性做久久久久久久久| 亚洲精品美女久久久久99| 狠狠色丁香婷婷综合久久来来去| 国产69精品久久久久9999APGF | 亚洲午夜福利精品久久| 97久久香蕉国产线看观看| 欧美伊人久久大香线蕉综合69| 久久狠狠高潮亚洲精品 | 成人资源影音先锋久久资源网| 久久电影网| 青草影院天堂男人久久| 99久久精品费精品国产一区二区| 欧美久久一区二区三区| 久久91精品久久91综合| 久久精品aⅴ无码中文字字幕不卡 久久精品aⅴ无码中文字字幕重口 | 久久免费视频1| 久久夜色撩人精品国产小说| 久久精品国产久精国产思思| 久久久精品人妻一区二区三区蜜桃 | 中文字幕人妻色偷偷久久| 久久婷婷色综合一区二区| 青青草国产成人久久91网| 九九99精品久久久久久| 久久精品草草草| 一级做a爰片久久毛片人呢| 亚洲狠狠久久综合一区77777 | 久久久久久一区国产精品| 久久er国产精品免费观看8| 天天综合久久久网| 国产午夜电影久久| 欧美大战日韩91综合一区婷婷久久青草 | 欧美熟妇另类久久久久久不卡| 一本色道久久HEZYO无码| 久久夜色精品国产网站|