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

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

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

    Samuel's Weblog

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      7 隨筆 :: 2 文章 :: 9 評論 :: 0 Trackbacks

    置頂隨筆 #

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

    我最初做開發的時候也是跟著感覺走,初次聽到OCP如天外來物.使用Java或C#不代表你就是在做OO開發,熟練使用OO語言不代表已經對OO非常了解.感謝Uncle Bob的經典巨著<Agile Software Development>,堅持閱讀的習慣讓我接觸并努力理解OO原則.一旦對這些原則有了深入的認識,寫代碼時就已經從更高的角度來分析問題,解決問題,力爭寫出優雅的代碼.

    我對OO的了解也不算多深刻,只在這里拋磚引玉.因為原則比較多,用一個系列來介紹會讓大家更容易溝通.

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

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

    Linguistic Modular Units

    Few Interfaces

    Small Interfaces

    Explicit Interfaces

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

    Law Of Demeter
    只與直接協作的類交互.

    The Principle of Essential Representation(PER)
    類應該包含而且只包含其本質的定義和表現,與SRP比較接近.

    Single Responsibility Principle(SRP)
    一個類只承擔一項職責,只能有一個發生變化的理由,那就是它的職責變化了.

    Open-Colse Principle(OCP)
    類應該對擴展是開放的,對修改是封閉的.

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

    Dependency-Inversion Principles(DIP)
    高層應該不依賴于低層,雙方都應該依賴于抽象.抽象不依賴于細節,細節應該依賴于抽象.

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

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

    Common Reuse Principle(CRP)
    包中的類應該是共同重用的.

    Common Closure Principle(CCP)
    包中的類對同一類變化共同封閉的,一個類發生變化,可能所有的類都要發生變化.

    ---------------------------------
    Acyclic Dependencies Principle(ADP)
    包之間的依賴結構不應該存在環依賴.

    Stable Dependencies Principle (SDP)
    包應該依賴于比它更穩定的包.

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

    ---------------------------------
    開發時應該避免的bad design smell:
    僵化(Rigidity) 一處變化會影響系統中的很多地方.
    脆弱(Fragility) 一處變化會影響系統中不應該被影響的地方.
    牢固(Immobility) 很難被重用.

    還有一些原則可能被遺漏掉,如果你發現了,請及時提醒我.

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

    2008年3月14日 #

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

    我最初做開發的時候也是跟著感覺走,初次聽到OCP如天外來物.使用Java或C#不代表你就是在做OO開發,熟練使用OO語言不代表已經對OO非常了解.感謝Uncle Bob的經典巨著<Agile Software Development>,堅持閱讀的習慣讓我接觸并努力理解OO原則.一旦對這些原則有了深入的認識,寫代碼時就已經從更高的角度來分析問題,解決問題,力爭寫出優雅的代碼.

    我對OO的了解也不算多深刻,只在這里拋磚引玉.因為原則比較多,用一個系列來介紹會讓大家更容易溝通.

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

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

    Linguistic Modular Units

    Few Interfaces

    Small Interfaces

    Explicit Interfaces

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

    Law Of Demeter
    只與直接協作的類交互.

    The Principle of Essential Representation(PER)
    類應該包含而且只包含其本質的定義和表現,與SRP比較接近.

    Single Responsibility Principle(SRP)
    一個類只承擔一項職責,只能有一個發生變化的理由,那就是它的職責變化了.

    Open-Colse Principle(OCP)
    類應該對擴展是開放的,對修改是封閉的.

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

    Dependency-Inversion Principles(DIP)
    高層應該不依賴于低層,雙方都應該依賴于抽象.抽象不依賴于細節,細節應該依賴于抽象.

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

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

    Common Reuse Principle(CRP)
    包中的類應該是共同重用的.

    Common Closure Principle(CCP)
    包中的類對同一類變化共同封閉的,一個類發生變化,可能所有的類都要發生變化.

    ---------------------------------
    Acyclic Dependencies Principle(ADP)
    包之間的依賴結構不應該存在環依賴.

    Stable Dependencies Principle (SDP)
    包應該依賴于比它更穩定的包.

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

    ---------------------------------
    開發時應該避免的bad design smell:
    僵化(Rigidity) 一處變化會影響系統中的很多地方.
    脆弱(Fragility) 一處變化會影響系統中不應該被影響的地方.
    牢固(Immobility) 很難被重用.

    還有一些原則可能被遺漏掉,如果你發現了,請及時提醒我.

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

    2007年4月26日 #

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

    14. Knock it off. 少來這一套。
    15. Get out of my face. 從我面前消失!
    16. Leave me alone. 走開。
    17. Get lost.滾開!
    18. Take a hike! 哪兒涼快哪兒歇著去吧。
    19. You piss me off. 你氣死我了。
    20. It’s none of your business. 關你屁事!
    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. 我受不了了!(李陽老師常用)
    28. I’ve had enough of your garbage. 我聽膩了你的廢話。
    29. Shut up! 閉嘴!
    30. What do you want? 你想怎么樣?
    31. Do you know what time it is? 你知道現在都幾點嗎?
    32. What were you thinking? 你腦子進水啊?
    33. How can you say that? 你怎么可以這樣說?
    34. Who says? 誰說的?
    35. That’s what you think! 那才是你腦子里想的!

    36. Don’t look at me like that. 別那樣看著我。
    37. What did you say? 你說什么?
    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. 你對我什么都不是。
    49. It’s not my fault. 不是我的錯。
    50. You look guilty. 你看上去心虛。
    51. I can’t help it. 我沒辦法。
    52. That’s your problem. 那是你的問題。
    53. I don’t want to hear it. 我不想聽!
    54. Get off my back. 少跟我羅嗦。
    55. Give me a break. 饒了我吧。

    56. Who do you think you’re talking to? 你以為你在跟誰說話?
    57. Look at this mess! 看看這爛攤子!
    58. You’re so careless. 你真粗心。
    59. Why on earth didn’t you tell me the truth? 你到底為什么不跟我說實話?
    60. I’m about to explode! 我肺都快要氣炸了!
    61. What a stupid idiot! 真是白癡一個!
    62. I’m not going to put up with this! 我再也受不了啦!
    63. I never want to see your face again! 我再也不要見到你!
    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! 我永遠都不會饒恕你!
    69. Don’t nag me! 別在我面前嘮叨!
    70. I’m sick of it. 我都膩了。
    71. Don’t you dare come back again! 你敢再回來!
    72. Stop screwing/ fooling/ messing around! 別鬼混了!
    73. Mind your own business! 管好你自己的事!
    74. You’re just a good for nothing bum! 你真是一個廢物!/ 你一無是處!
    75. You’ve gone too far! 你太過分了!

    76. I loathe you! 我討厭你!
    77. I detest you! 我恨你!
    78. Get the hell out of here! 滾開!
    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! 離我遠一點兒!
    84. Get out of my life. 我不愿再見到你。/ 從我的生活中消失吧。
    85. You’re a joke! 你真是一個小丑!

    86. Don’t give me your attitude. 別跟我擺架子。
    87. You’ll be sorry. 你會后悔的。
    88. We’re through. 我們完了!
    89. Look at the mess you’ve made! 你搞得一團糟!
    90. You’ve ruined everything. 全都讓你搞砸了。
    91. I can’t believe your never. 你好大的膽子!
    92. You’re away too far. 你太過分了。
    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! 那是我聽到的最愚蠢的事!  (比爾·蓋茨常用)
    97. I can’t believe a word you say. 我才不信你呢!
    98. You never tell the truth! 你從來就不說實話!
    99. Don’t push me ! 別逼我!
    100. Enough is enough! 夠了夠了!

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

    2007年1月29日 #

    有效的激勵機制可以使團隊更有效地工作,效率可以將團隊的整體能力提高三到五倍,這就是激勵機制的重要性。許多公司都知道它的重要性,卻無法真正地執行有效的激勵機制,始終得不到想要結果。我想這是大多數公司的共有的問題,喜歡理所當然地認為這樣或那樣的方式一定有效,結果卻適得其反。

    通常會在成就感、發展機遇、工作樂趣、獲得回報幾方面。
    成就感,首先表現在自主權上,工作有多大的自由度。通常開發人員的工作都是由Leader指定,這里對Leader的領導藝術有一定的要求。如果員工被指定這項任務會細致到每個變量怎么聲明,或者簡單得像培訓材料上的實例,不要指望誰會喜歡這項任務。大家都喜歡在工作中有一定的自由度,在統一的規則下可以加入自己的思想和行為,工作完成之后你可以認為你的智力已經投入到這項任務中而不只是體力。其次是設定目標,看看目標是否對自己是一種挑戰。如果你非常確定可以實現你的目標,一點難度也沒有,這項工作的意義就會顯得不那么大,你也就不會從中獲得成就感。怎樣使每項工作對被指定的每個員工來講都是重要的,使每個員工能充分發揮自己的能力,持續獲得成就感,這就是Leader的任務。

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

    有些企業總會覺得如果給員工培訓會增加許多的成本,擔心培訓完之后員工很快離職,為別人做嫁衣。其實目光放遠點就會發現,完善的培訓機制也會吸引更多人才加盟。總看到事物的反面,總會裹步不前。

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

    許多企業認為只有金錢才可以激勵員工。不可否認金錢確實可以做到這一點,但多數情況下它無法做到你想要做的事,即使你認為應該可以達到你想的目的。最差的情況是沒有任何激勵措施而只有空頭支票,次差的情況就是給表現差的人5%的獎勵,表現好的人6%的獎勵。更糟糕的是,還認為如果達不到激勵的目的,那一定是員工自己本身的思想存在問題。

    其實激勵的方式很多,大家可以談談自己的心得,從管理層或是普通員工的角度,找到大家的交集。
    posted @ 2007-01-29 17:38 SamuelRay 閱讀(519) | 評論 (0)編輯 收藏

    2007年1月5日 #

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

    2006年11月21日 #

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

    2006年11月19日 #

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

    符合這些條件的設計通常就是非常可靠的設計。

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

    僅列出標題  
    主站蜘蛛池模板: 国产精品亚洲二区在线观看| 美女黄网站人色视频免费国产| 无码欧精品亚洲日韩一区夜夜嗨 | 国内精品久久久久久久亚洲| 免费一级毛片在线播放视频免费观看永久 | 亚洲国产成人精品久久久国产成人一区二区三区综 | 国产精品亚洲色图| 成人永久福利免费观看| 亚洲色成人四虎在线观看| 午夜免费不卡毛片完整版| 精品国产亚洲AV麻豆| 免费A级毛片无码久久版| 一区二区三区视频免费| 国产V亚洲V天堂无码久久久| 免费观看男人吊女人视频| 亚洲黄色免费电影| 免费国产作爱视频网站| 亚洲精品第一国产综合亚AV| 免费吃奶摸下激烈视频| 精品人妻系列无码人妻免费视频| 亚洲av中文无码乱人伦在线咪咕| 91精品免费在线观看| 精品无码专区亚洲| 中文字幕亚洲不卡在线亚瑟| 最近2019中文字幕免费大全5 | 香蕉视频免费在线| 人人狠狠综合久久亚洲婷婷| 我们的2018在线观看免费高清| 亚洲精品美女久久久久久久| 精品国产人成亚洲区| 午夜免费福利片观看| 国产精品久久亚洲不卡动漫| 免费在线观看污网站| 午夜视频在线免费观看| 亚洲一本之道高清乱码| 亚洲高清最新av网站| 91久久精品国产免费一区| 国产精品久久久久久亚洲影视| 亚洲色无码专区在线观看| 免费看美女裸露无档网站| 永久免费无码网站在线观看个|