<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Samuel's Weblog

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      7 隨筆 :: 2 文章 :: 9 評(píng)論 :: 0 Trackbacks

    2006年11月19日 #

    最近在審查(review)代碼時(shí),常常發(fā)現(xiàn)一大堆代碼充滿了各種bad smell.即使工作了三五年的同事,也不會(huì)例外.溝通時(shí)往往發(fā)現(xiàn)他們對(duì)OO的理解只是表現(xiàn)出簡(jiǎn)單的概念理解.對(duì)OO的一些原則不甚了解,或者寫(xiě)代碼也是跟著感覺(jué)走.

    我最初做開(kāi)發(fā)的時(shí)候也是跟著感覺(jué)走,初次聽(tīng)到OCP如天外來(lái)物.使用Java或C#不代表你就是在做OO開(kāi)發(fā),熟練使用OO語(yǔ)言不代表已經(jīng)對(duì)OO非常了解.感謝Uncle Bob的經(jīng)典巨著<Agile Software Development>,堅(jiān)持閱讀的習(xí)慣讓我接觸并努力理解OO原則.一旦對(duì)這些原則有了深入的認(rèn)識(shí),寫(xiě)代碼時(shí)就已經(jīng)從更高的角度來(lái)分析問(wèn)題,解決問(wèn)題,力爭(zhēng)寫(xiě)出優(yōu)雅的代碼.

    我對(duì)OO的了解也不算多深刻,只在這里拋磚引玉.因?yàn)樵瓌t比較多,用一個(gè)系列來(lái)介紹會(huì)讓大家更容易溝通.

    同時(shí),原則是死的,人是活的,不要被這些原則束縛,有一些原則在特定的情況下才會(huì)有效.

    Single Choice Principle(SCP)
    所有的判斷只在一處進(jìn)行.違反此原則的典型情況是不同的方法中充斥著相同的if ... else ...或類(lèi)似的語(yǔ)句.

    Linguistic Modular Units

    Few Interfaces

    Small Interfaces

    Explicit Interfaces

    Behavioral Completeness
    一個(gè)完整的類(lèi)必須包含完整的方法.如果類(lèi)沒(méi)有完成它的職責(zé),或者沒(méi)有完成其父類(lèi)需要完成的工作,那么它就是不完整的類(lèi).

    Law Of Demeter
    只與直接協(xié)作的類(lèi)交互.

    The Principle of Essential Representation(PER)
    類(lèi)應(yīng)該包含而且只包含其本質(zhì)的定義和表現(xiàn),與SRP比較接近.

    Single Responsibility Principle(SRP)
    一個(gè)類(lèi)只承擔(dān)一項(xiàng)職責(zé),只能有一個(gè)發(fā)生變化的理由,那就是它的職責(zé)變化了.

    Open-Colse Principle(OCP)
    類(lèi)應(yīng)該對(duì)擴(kuò)展是開(kāi)放的,對(duì)修改是封閉的.

    Liskov Substitution (LSP)
    子類(lèi)必須可以替換父類(lèi).

    Dependency-Inversion Principles(DIP)
    高層應(yīng)該不依賴于低層,雙方都應(yīng)該依賴于抽象.抽象不依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象.

    Interface Segregation Principles(ISP)
    接口屬于客戶程序.

    ---------------------------------
    Reuse Release Equivalence Principle(REP)
    重用的粒度等于發(fā)布的粒度.

    Common Reuse Principle(CRP)
    包中的類(lèi)應(yīng)該是共同重用的.

    Common Closure Principle(CCP)
    包中的類(lèi)對(duì)同一類(lèi)變化共同封閉的,一個(gè)類(lèi)發(fā)生變化,可能所有的類(lèi)都要發(fā)生變化.

    ---------------------------------
    Acyclic Dependencies Principle(ADP)
    包之間的依賴結(jié)構(gòu)不應(yīng)該存在環(huán)依賴.

    Stable Dependencies Principle (SDP)
    包應(yīng)該依賴于比它更穩(wěn)定的包.

    Stable Abstractions Principle(SAP)
    包的穩(wěn)定程度與抽象程度成正比,越抽象的包越穩(wěn)定.

    ---------------------------------
    開(kāi)發(fā)時(shí)應(yīng)該避免的bad design smell:
    僵化(Rigidity) 一處變化會(huì)影響系統(tǒng)中的很多地方.
    脆弱(Fragility) 一處變化會(huì)影響系統(tǒng)中不應(yīng)該被影響的地方.
    牢固(Immobility) 很難被重用.

    還有一些原則可能被遺漏掉,如果你發(fā)現(xiàn)了,請(qǐng)及時(shí)提醒我.

     更多內(nèi)容在另一博客http://samuelray.javaeye.com.
    posted @ 2008-03-14 09:55 SamuelRay 閱讀(1854) | 評(píng)論 (8)編輯 收藏

    1. You make me sick! 你真讓我惡心!
    2. What’s wrong with you? 你怎么回事?
    3. I’m very disappointed. 真讓我失望。
    5. You’re a jerk! 你是個(gè)廢物/混球!
    6. Don’t talk to me like that! 別那樣和我說(shuō)話!
    7. Who do you think you are? 你以為你是誰(shuí)?
    8. What’s your problem? 你怎么回事啊?
    9. I hate you! 我討厭你!
    10. I don’t want to see your face! 我不愿再見(jiàn)到你!
    11. You’re crazy! 你瘋了!
    12. Are you insane/crazy/out of your mind? 你瘋了嗎?
    13. Don’t bother me. 別煩我。

    14. Knock it off. 少來(lái)這一套。
    15. Get out of my face. 從我面前消失!
    16. Leave me alone. 走開(kāi)。
    17. Get lost.滾開(kāi)!
    18. Take a hike! 哪兒涼快哪兒歇著去吧。
    19. You piss me off. 你氣死我了。
    20. It’s none of your business. 關(guān)你屁事!
    21. What’s the meaning of this? 這是什么意思?
    22. How dare you! 你敢!
    23. Cut it out. 省省吧。
    24. You stupid jerk! 你這蠢*!
    25. You have a lot of nerve. 臉皮真厚。
    26. I’m fed up. 我厭倦了。
    27. I can’t take it anymore. 我受不了了!(李陽(yáng)老師常用)
    28. I’ve had enough of your garbage. 我聽(tīng)膩了你的廢話。
    29. Shut up! 閉嘴!
    30. What do you want? 你想怎么樣?
    31. Do you know what time it is? 你知道現(xiàn)在都幾點(diǎn)嗎?
    32. What were you thinking? 你腦子進(jìn)水啊?
    33. How can you say that? 你怎么可以這樣說(shuō)?
    34. Who says? 誰(shuí)說(shuō)的?
    35. That’s what you think! 那才是你腦子里想的!

    36. Don’t look at me like that. 別那樣看著我。
    37. What did you say? 你說(shuō)什么?
    38. You are out of your mind. 你腦子有毛病!
    39. You make me so mad.你氣死我了啦。
    40. Drop dead. 去死吧!
    41. Don’t give me your shit. 別跟我胡扯。
    42. Don’t give me your excuses/ No more excuses. 別找借口。
    43. Nonsense! 鬼話!
    44. You’re a pain in the ass. 你這討厭鬼。
    45. You’re an asshole. 你這缺德鬼。

    46. You asked for it. 你自找的。
    47. Get over yourself. 別自以為是。
    48. You’re nothing to me. 你對(duì)我什么都不是。
    49. It’s not my fault. 不是我的錯(cuò)。
    50. You look guilty. 你看上去心虛。
    51. I can’t help it. 我沒(méi)辦法。
    52. That’s your problem. 那是你的問(wèn)題。
    53. I don’t want to hear it. 我不想聽(tīng)!
    54. Get off my back. 少跟我羅嗦。
    55. Give me a break. 饒了我吧。

    56. Who do you think you’re talking to? 你以為你在跟誰(shuí)說(shuō)話?
    57. Look at this mess! 看看這爛攤子!
    58. You’re so careless. 你真粗心。
    59. Why on earth didn’t you tell me the truth? 你到底為什么不跟我說(shuō)實(shí)話?
    60. I’m about to explode! 我肺都快要?dú)庹耍?br>61. What a stupid idiot! 真是白癡一個(gè)!
    62. I’m not going to put up with this! 我再也受不了啦!
    63. I never want to see your face again! 我再也不要見(jiàn)到你!
    64. That’s terrible. 真糟糕!
    65. Just look at what you’ve done! 看看你都做了些什么!

    66. I wish I had never met you. 我真后悔這輩子遇到你!
    67. You’re a disgrace. 你真丟人!
    68. I’ll never forgive you! 我永遠(yuǎn)都不會(huì)饒恕你!
    69. Don’t nag me! 別在我面前嘮叨!
    70. I’m sick of it. 我都膩了。
    71. Don’t you dare come back again! 你敢再回來(lái)!
    72. Stop screwing/ fooling/ messing around! 別鬼混了!
    73. Mind your own business! 管好你自己的事!
    74. You’re just a good for nothing bum! 你真是一個(gè)廢物!/ 你一無(wú)是處!
    75. You’ve gone too far! 你太過(guò)分了!

    76. I loathe you! 我討厭你!
    77. I detest you! 我恨你!
    78. Get the hell out of here! 滾開(kāi)!
    79. Don’t be that way! 別那樣!
    80. Can’t you do anything right? 成事不足,敗事有余。

    81. You’re impossible. 你真不可救藥。
    82. Don’t touch me! 別碰我!
    83. Get away from me! 離我遠(yuǎn)一點(diǎn)兒!
    84. Get out of my life. 我不愿再見(jiàn)到你。/ 從我的生活中消失吧。
    85. You’re a joke! 你真是一個(gè)小丑!

    86. Don’t give me your attitude. 別跟我擺架子。
    87. You’ll be sorry. 你會(huì)后悔的。
    88. We’re through. 我們完了!
    89. Look at the mess you’ve made! 你搞得一團(tuán)糟!
    90. You’ve ruined everything. 全都讓你搞砸了。
    91. I can’t believe your never. 你好大的膽子!
    92. You’re away too far. 你太過(guò)分了。
    93. I can’t take you any more! 我再也受不了你啦!
    94. I’m telling you for the last time! 我最后再告訴你一次!
    95. I could kill you! 我宰了你!

    96. That’s the stupidest thing I’ve ever heard! 那是我聽(tīng)到的最愚蠢的事!  (比爾·蓋茨常用)
    97. I can’t believe a word you say. 我才不信你呢!
    98. You never tell the truth! 你從來(lái)就不說(shuō)實(shí)話!
    99. Don’t push me ! 別逼我!
    100. Enough is enough! 夠了夠了!

    posted @ 2007-04-26 15:40 SamuelRay 閱讀(373) | 評(píng)論 (0)編輯 收藏

    有效的激勵(lì)機(jī)制可以使團(tuán)隊(duì)更有效地工作,效率可以將團(tuán)隊(duì)的整體能力提高三到五倍,這就是激勵(lì)機(jī)制的重要性。許多公司都知道它的重要性,卻無(wú)法真正地執(zhí)行有效的激勵(lì)機(jī)制,始終得不到想要結(jié)果。我想這是大多數(shù)公司的共有的問(wèn)題,喜歡理所當(dāng)然地認(rèn)為這樣或那樣的方式一定有效,結(jié)果卻適得其反。

    通常會(huì)在成就感、發(fā)展機(jī)遇、工作樂(lè)趣、獲得回報(bào)幾方面。
    成就感,首先表現(xiàn)在自主權(quán)上,工作有多大的自由度。通常開(kāi)發(fā)人員的工作都是由Leader指定,這里對(duì)Leader的領(lǐng)導(dǎo)藝術(shù)有一定的要求。如果員工被指定這項(xiàng)任務(wù)會(huì)細(xì)致到每個(gè)變量怎么聲明,或者簡(jiǎn)單得像培訓(xùn)材料上的實(shí)例,不要指望誰(shuí)會(huì)喜歡這項(xiàng)任務(wù)。大家都喜歡在工作中有一定的自由度,在統(tǒng)一的規(guī)則下可以加入自己的思想和行為,工作完成之后你可以認(rèn)為你的智力已經(jīng)投入到這項(xiàng)任務(wù)中而不只是體力。其次是設(shè)定目標(biāo),看看目標(biāo)是否對(duì)自己是一種挑戰(zhàn)。如果你非常確定可以實(shí)現(xiàn)你的目標(biāo),一點(diǎn)難度也沒(méi)有,這項(xiàng)工作的意義就會(huì)顯得不那么大,你也就不會(huì)從中獲得成就感。怎樣使每項(xiàng)工作對(duì)被指定的每個(gè)員工來(lái)講都是重要的,使每個(gè)員工能充分發(fā)揮自己的能力,持續(xù)獲得成就感,這就是Leader的任務(wù)。

    發(fā)展機(jī)遇,表現(xiàn)在很多方面,不同的個(gè)體對(duì)此看法也不盡相同,大體上包括:
    》提供進(jìn)修的機(jī)會(huì),以提升員工的能力或是團(tuán)隊(duì)的整體實(shí)力。
    》提供進(jìn)修或自學(xué)的假期,讓員工可以利用這個(gè)假期做一些自我增值的進(jìn)修學(xué)習(xí)。
    》購(gòu)買(mǎi)專業(yè)書(shū)籍或者任何可以幫到員工的書(shū)籍
    》鼓勵(lì)員工進(jìn)入可以擴(kuò)展其技能的項(xiàng)目工作。多數(shù)企業(yè)認(rèn)為如果你在某項(xiàng)目中工作得越久,那么你繼續(xù)在這項(xiàng)目工作會(huì)使工作成果越有效,因而盡量阻止員工離開(kāi)現(xiàn)在的崗位。事實(shí)上,如果一個(gè)人在某項(xiàng)工作上工作得越久,越容易失去工作的熱情。技術(shù)上得不到提高,內(nèi)容也是千篇一律,漸漸被技術(shù)拋棄感覺(jué)越來(lái)越強(qiáng)烈。如果不能在公司內(nèi)部獲得進(jìn)入其它項(xiàng)目的機(jī)會(huì),通常員工的流失也是不可避免的。
    》為員工指定導(dǎo)師并表明企業(yè)致力于其職業(yè)發(fā)展
    》避免進(jìn)度的壓力過(guò)大

    有些企業(yè)總會(huì)覺(jué)得如果給員工培訓(xùn)會(huì)增加許多的成本,擔(dān)心培訓(xùn)完之后員工很快離職,為別人做嫁衣。其實(shí)目光放遠(yuǎn)點(diǎn)就會(huì)發(fā)現(xiàn),完善的培訓(xùn)機(jī)制也會(huì)吸引更多人才加盟。總看到事物的反面,總會(huì)裹步不前。

    工作樂(lè)趣是一項(xiàng)非常重要的指標(biāo),它表明員工是否在每天早晨急于上班,希望盡快進(jìn)入工作狀態(tài)。員工在什么情況下會(huì)容易找到工作樂(lè)趣呢?
    》感受到工作的意義,工作成果的責(zé)任,并且了解工作成果。沒(méi)有人會(huì)為正在開(kāi)發(fā)一個(gè)沒(méi)有完成就注定被放棄的項(xiàng)目而感受工作的樂(lè)趣,有的只是沮喪,失望,挫折感,趕快下班回家,明天就辭職。
    》技術(shù)的多樣性,保持一定的新奇和挑戰(zhàn)。
    》任務(wù)的完整性、重要性
    》自主性,可以決定今天做哪些工作,這一周做哪些工作。
    》工作反饋,最差的反饋恐怕莫過(guò)于敷衍。

    許多企業(yè)認(rèn)為只有金錢(qián)才可以激勵(lì)員工。不可否認(rèn)金錢(qián)確實(shí)可以做到這一點(diǎn),但多數(shù)情況下它無(wú)法做到你想要做的事,即使你認(rèn)為應(yīng)該可以達(dá)到你想的目的。最差的情況是沒(méi)有任何激勵(lì)措施而只有空頭支票,次差的情況就是給表現(xiàn)差的人5%的獎(jiǎng)勵(lì),表現(xiàn)好的人6%的獎(jiǎng)勵(lì)。更糟糕的是,還認(rèn)為如果達(dá)不到激勵(lì)的目的,那一定是員工自己本身的思想存在問(wèn)題。

    其實(shí)激勵(lì)的方式很多,大家可以談?wù)勛约旱男牡茫瑥墓芾韺踊蚴瞧胀▎T工的角度,找到大家的交集。
    posted @ 2007-01-29 17:38 SamuelRay 閱讀(519) | 評(píng)論 (0)編輯 收藏

    參考MSDN
    posted @ 2007-01-05 16:21 SamuelRay 閱讀(323) | 評(píng)論 (0)編輯 收藏

         摘要: 大量的軟件企業(yè)已經(jīng)在實(shí)施或準(zhǔn)備實(shí)施CMM,在這個(gè)過(guò)程中出現(xiàn)了許多誤區(qū)。我現(xiàn)在工作的公司已經(jīng)是CMMI5,但我們依然有大量的工作要做,才能逐漸提高效率。  閱讀全文
    posted @ 2006-11-21 14:17 SamuelRay 閱讀(296) | 評(píng)論 (0)編輯 收藏

    在這里只是簡(jiǎn)單談?wù)勗O(shè)計(jì)的基本含意,拋磚引玉。
    設(shè)計(jì)的本質(zhì)就是把軟件的需求說(shuō)明轉(zhuǎn)變成可以運(yùn)行的程序的整個(gè)過(guò)程。設(shè)計(jì)是一種腦力勞動(dòng),或者說(shuō)是一個(gè)啟發(fā)過(guò)程。設(shè)計(jì)是一個(gè)復(fù)雜的過(guò)程,現(xiàn)在從幾個(gè)方面闡述它。
    設(shè)計(jì)可以表現(xiàn)在多層次上面,設(shè)計(jì)方法可以是自底向上或是自頂向下,在實(shí)際的工作中,這兩者結(jié)合使用,相輔相成。首先使用自頂向下的方法把軟件系統(tǒng)劃分成多個(gè)層次,再在每個(gè)層次上面自頂向下或自底向上推動(dòng)設(shè)計(jì)。層次從上到下通常表現(xiàn)為子系統(tǒng),然后是模塊,子程序,最后是內(nèi)部子程序。這里模塊和子程序的區(qū)別在于模快包含了一些子程序和相關(guān)的數(shù)據(jù),而子程序只是一些功能集合。
    在早期,大家都采用結(jié)構(gòu)化設(shè)計(jì),使用程序看起來(lái)更富邏輯性,直到面向?qū)ο?OO)方法的出現(xiàn)。OO是設(shè)計(jì)方法的高層發(fā)展,和結(jié)構(gòu)化設(shè)計(jì)并不矛盾。現(xiàn)在又有了面向方面(OA)發(fā)起了另一場(chǎng)革命,使設(shè)計(jì)方法更深入發(fā)展。這三種方法也不是互斥的,三者相互協(xié)作,大大提高了設(shè)計(jì)的質(zhì)量。
    設(shè)計(jì)過(guò)程是一個(gè)啟發(fā)的過(guò)程,非常復(fù)雜。多數(shù)情況下我們需要迭代多次才能達(dá)成最后的目標(biāo),還有一些是使用增量式開(kāi)發(fā)過(guò)程來(lái)完成設(shè)計(jì)。我推薦大家使用迭代,明確定義每次迭代的目標(biāo),這樣每一步都走得很踏實(shí)。迭代使我們逐步細(xì)化設(shè)計(jì),逼近最終產(chǎn)品,而且結(jié)果是容易驗(yàn)證的,整個(gè)過(guò)程是自信和愉快的。
    在這當(dāng)中還要提到一個(gè)通用的準(zhǔn)則:解決問(wèn)題的方法。遇到問(wèn)題時(shí),首先要問(wèn)自己這個(gè)問(wèn)題到底是什么(What)?搞清楚問(wèn)題的真正原因,然后再制定幾個(gè)方案并評(píng)估它們做出最后的選擇(How)。接著是實(shí)現(xiàn)你的方案,有了前面的準(zhǔn)備階段,這一步實(shí)在是簡(jiǎn)單到頂。最后你要去驗(yàn)證你的方案是否達(dá)到你的目的,這也很簡(jiǎn)單。
    什么樣的設(shè)計(jì)才算是優(yōu)秀呢?
    • 簡(jiǎn)單
    • 低耦合高內(nèi)聚
    • 易擴(kuò)展
    • 易移植
    • 易重用且重用度高
    • 標(biāo)準(zhǔn)化程度高

    符合這些條件的設(shè)計(jì)通常就是非常可靠的設(shè)計(jì)。

    posted @ 2006-11-19 14:45 SamuelRay 閱讀(1442) | 評(píng)論 (1)編輯 收藏

    主站蜘蛛池模板: 中国精品一级毛片免费播放| 亚洲日本va在线视频观看| 四只虎免费永久观看| 国产l精品国产亚洲区在线观看| 7777久久亚洲中文字幕| 久久精品成人免费网站| 免费成人黄色大片| 亚洲女女女同性video| 无码av免费毛片一区二区| 国产午夜亚洲精品午夜鲁丝片| 久久精品熟女亚洲av麻豆| 91免费国产自产地址入| 亚洲国产精品SSS在线观看AV| 亚洲黄色免费网址| 亚洲国产精品综合一区在线| 久久精品人成免费| 亚洲精品视频在线观看视频| 久9久9精品免费观看| 亚洲av无码乱码国产精品fc2| 花蝴蝶免费视频在线观看高清版| 国产A在亚洲线播放| 日韩成人免费视频播放| 亚洲高清一区二区三区电影| 成人免费a级毛片无码网站入口| 国产亚洲精品a在线无码| 国产做国产爱免费视频| 亚洲av中文无码乱人伦在线播放 | 免费黄色福利视频| 免费大片黄在线观看| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 韩国18福利视频免费观看| 色欲色欲天天天www亚洲伊| 日本特黄特色aa大片免费| 久久免费线看线看| 人人公开免费超级碰碰碰视频| 亚洲午夜久久久影院| 四虎影视永久免费观看| 免费精品人在线二线三线区别| 另类图片亚洲校园小说区| 亚洲人成无码网站| 亚洲?v无码国产在丝袜线观看|