Skip to main content

Home/ Groups/ InfokeyDEV
Benx Shen

框架為我所用,勿為框架所困 - 0 views

  • 我們已經被框架所包圍,我們已陷入了學習之苦。
  • 由於長期接受中國式教育,所以我們已經習慣了學習,學習幾個框架,對於國人來說也不是什麼大不了的事情,然而我們也發現,相對於我們的學習能力而言,我們的創造性顯得有些不足,我們有了繼承他人的能力,我們也缺乏一種顛覆他人的精神。
Benx Shen

mock框架搞什麼搞? - 0 views

  •  
    發文者 taowen 提出了一個對於 mock 框架(jMock, EasyMock)的使用經驗,認為這樣的框架並沒有帶給他測試上的方便性,反而似乎使得測試程式碼更多更亂,因此,他提出了對於 mock 框架技術的質疑。

    不過,taowen 並不是單純地從情緒上發揮論述,而是舉出了一些簡單的程式馬來進行測試,試圖寫 mock 測試程式並非那麼簡易。另外,他自己另外展示了如何不用 mock 框架來進行單元測試。從這一點來看,taowen 很棒地說明了該如何進行單元測試,無論使用哪一種方法。

    值得我學習的是,taowen 提出了自己對於 mock 框架的觀點,他的經驗告訴他:mock 到底在搞什麼東西!?於是勇敢地提出質疑。這樣的質疑,我認為比學習技術本身更有價值。從結果來看,這引發了相當多的迴響與討論,有人認為這樣,卻有人不以為然。(我相信 taowen 心臟必須要夠強,才能夠接受不同的意見而不感到生氣。我覺得我還需要學習這樣的質疑態度與接受批評的雅量。)總的來說,我發現我看到了更多元的資訊,作為一個學習者,比起單純地從一篇文章學習技術還要能夠學得更多。

    雖然我使用 mock 技術有一小段時間,而我也懂得 mock 真正的意圖以及單元測試所帶來的價值,這並不會使得我一開始就認為 taowen 是錯誤的,即便看完他的發表之後,我仍然不認為他不應該提出這樣的質疑(我想我已經在上面一段表達我的「推崇」之意,以及我所認為背後的價值)。和一些參與討論的網友一樣,認為這不是一個完全適當的例子,但 taowen 也的確指出了 mock 技術會讓開發者詬病之處。然而,這並不足以說明 mock 真是非常難用,或造成了單元測試的困擾。實際的狀況是,我們得再從 mock 技術所帶來的好處出發,瞭解了之
Benx Shen

{|ihower.idv.tw| blog } » 什麼是REST跟RESTful? - 0 views

Benx Shen

SVN svnserve 方式安裝及配置 - Subversion服務器配置 - Subversion中文站論壇 Subversion|SVN|Torto... - 0 views

Benx Shen

Use Case 中 include 與 extend 的區別 - 0 views

    • Benx Shen
       
      include 是指用例中的包含關係,通常發生在多個用例中,有可以提取出來的公共部分(就像提取公因式一樣),例如 UseCaseA 中包括了 a 和 b 兩個流程,而 UseCaseC 中包含了 c 和 b 兩個流程。
    • Benx Shen
       
      extend 則恰好相反。假設 UseCaseA 的功能描述為"發送一條通知",可是,發送通知的方式可能有許多種,例如通過郵件發送、通過短信發送等。在需求分析階段,可能無法明確到底有多少種方式,在用例分析階段,UseCaseA 需要留出擴展接口,然後把已知的發送方式作為擴展用例給出,例如 UseCaseB 是"通過短信發送",而 UseCaseC 是"通過郵件發送"
Benx Shen

Web框架比较 - 0 views

Benx Shen

Tomcat 實用小技巧-Tomcat-Java - 0 views

Benx Shen

嵌入式Tomcat怎麼能讓Context自動reload-Tomcat-Java - 0 views

Benx Shen

NetBeans 6.0預覽版讓Java開發者驚喜 - [Matrix - 與 Java 共舞] - 0 views

Benx Shen

從分佈式系統的角度看REST-企業應用-Java -JavaEye做最棒的軟件開發交流社區 - 0 views

  • 從REST具備的內在特徵來說,它包括了這些特徵: 1、基於HTTP的資源 2、以HTTP協議去操作 3、數據和表象分離
Benx Shen

openjfx: openjfx: JavaFX編程語言 - 0 views

  • JavaFX Script™ (下文中成為JavaFX)語言是一種聲明式的靜態類型編程語言。它具有第一級函數(first-class functions)、聲明式的語法、列表推導(list-comprehensions)及基於依賴關係的增量式求值(incremental dependency-based evaluation)等特徵。JavaFX 腳本式語言特別適用於Java2D swing GUI組件,它允許簡單地創建圖形界面。 譯者註:第一級函數指函數被當作對象對待,可以在運行時賦值、傳遞和返回。詳見wikipedia上的解釋。 譯者註:列表推導指一種在函數語言中的表達式,它表示了在一個或者多個列表的成員(被選擇的)進行某種操作的結果。它被稱為"syntactic sugar",即為開發者提供了便捷的多種函數的應用組合。詳見FOLDC對list comprehension的解釋。 本文檔給出了JavaFX 腳本式編程語言的非正式描述。
Benx Shen

Java object queries using JXPath - Java World - 0 views

  • Java object queries using JXPath Query complex Java object trees using the XPath expression language
Benx Shen

Java 編程的動態性,第 1 部分: 類和類裝入 - 0 views

Benx Shen

Groovy - Groovy Categories - 0 views

  • import groovy.xml.* def html = DOMBuilder.newInstance().html { head { title (class:'mytitle', 'Test') } body { p (class:'mystyle', 'This is a test.') } } use (groovy.xml.dom.DOMCategory.class) { assert html.head.title.text() == 'Test' assert html.body.p.text() == 'This is a test.' assert html.find{ it.tagName == 'body' }.tagName == 'body' assert html.getElementsByTagName('*').grep{ it.'@class' }.size() == 2 }
    • Benx Shen
       
      這裡是一個範例,可以看到透過 DOMCategory 的協助,xml dom 元素的存取直接可以用 "expression" 的方式就可以很方便地取用,而不需要很囉唆地 getElement() 或之類的
Benx Shen

Initialization on demand holder idiom - Wikipedia, the free encyclopedia - 0 views

  • public class Something { private Something() { } private static class LazyHolder { private static final Something something = new Something(); } public static Something getInstance() { return LazyHolder.something; } }
    • Benx Shen
       
      Singleton pattern 終極解法!
  •  
    Java Singlton 模式的終極解決之道!
  •  
    對了會發現這篇文章,是因為 http://www.eclipsezone.com/eclipse/forums/t97263.rhtml 這裡討論在 eclipse 裡如何使用最簡單的步驟創建一個 singlton 類別設計。
Benx Shen

CruiseControl发布2.7正式版 - [Matrix - 与 Java 共舞] - 0 views

Benx Shen

bassistance.de » jQuery plugin: Validation - 0 views

Benx Shen

無類語言的OOP(JavaScript描述)-FP-綜合技術 -JavaEye做最棒的軟件開發交流社區 - 0 views

  • 本文以 JavaScript 語言為例,介紹了無類面向對象語言中實現各種面向對象概念的方法。
  • 無類語言的OOP(JavaScript描述)
Benx Shen

Groovy - Regular Expressions - 0 views

  • Groovy supports regular expressions natively using the ~"pattern" expression
    • Benx Shen
       
      Groovy 對於 regexp 的支援有 3 個特殊的表示方式:
      ~"pattern" (create java.util.regex.Pattern)=~ (create java.util.regex.Matcher)==~ (do Matcher.matches() )
  • // lets create a regex Pattern def pattern = ~/foo/ assert pattern instanceof Pattern
  • Groovy also supports the =~ (create Matcher) and ==~ (matches regex) operators.
  • ...6 more annotations...
  • Since a Matcher coerces to a boolean by calling its find method, the =~ operator is consistent with the simple use of Perl's =~ operator, when it appears as a predicate (in 'if', 'while', etc.). The "stricter-looking" ==~ operator requires an exact match of the whole subject string.
  • def matcher = "\$abc." =~ /\$(.*)\./ // no need to double-escape! assert "\\\$(.*)\\." == /\$(.*)\./ matcher.matches(); // must be invoked assert matcher.group(1) == "abc" // is one, not zero
  • def m = "foobarfoo" =~ /o(b.*r)f/ assert m[0][1] == "bar"
  • // lets create a Matcher def matcher = "cheesecheese" =~ /cheese/ assert matcher instanceof Matcher answer = matcher.replaceAll("edam")
    • Benx Shen
       
      以下是一些 groovy regexp 的程式碼,請特別注意劃線的部份!
  • // fancier group demo matcher = "\$abc." =~ "\\\$(.*)\\." matcher.matches(); // must be invoked [Question: is this still true? Not in my experience with jsr-04.] assert matcher.group(1) == "abc" // is one, not zero
    • Benx Shen
       
      這裡需要特別注意的是,如果想要使用 matcher.group() 方法,那麼必須先執行 matcher.matches() 方法呼叫(我記得呼叫 find() 也行)。然而,如果是直接使用 groovy 的語法,那麼就可以直接使用 matcher[0][?] 的用法了!
Benx Shen

Groovy - User Guide - 0 views

‹ Previous 21 - 40 of 467 Next › Last »
Showing 20 items per page