發表文章

目前顯示的是 2月, 2014的文章

簡易的命名原則

實習以後時再遇到太多的"實務經驗"的洗禮了 以前繳作業大概就是能跑出結果,不要出大問題就ok 雖然也都教過一些原則跟"良好的程式"應該具備的東西,不會被釘的時候常常就....可以看就好啦~ 然而到了實習發現很多原則不遵守都不行,甚至要求的還比較嚴格 因為在專案變大已經不是自行玩玩的小程式了,人員、規格、嚴謹程度都大幅提升 也開始懂得「為什麼測試步驟常常被跳過」、「程式設計師跟需求端的溝通困難」之類的心情了XD 不過被釘了三個禮拜後,確實也學到滿多經驗跟擴展一些視野 今天記錄一下學到的一些命名原則 命名的要有意義: 最基本的要求,在境界上「讓大家不用看註解就能看懂」是最佳情況,因為註解可能寫的跟程式不同,但所有根本應該都還是程式。 盡量不要縮寫,把完整單字寫出,除非有特定領域大家都可接受的縮寫: 確保其他人一看就看得懂的意思 有「 Camel Case 」和「 Pascal Case 」兩種主要的命名方法 Camel Case:第一個字開頭小寫,後續單字開始大寫。如:firstName Pascal Case:第一個字開頭大寫,後續單字也都大寫。如:FirstName 避免使用符號、空白跟底線: 利用第3點的方式來命名 命名沒有絕對,可以參考團隊的開發手冊,整個團隊可以接受有共識即可。 另外不確定是OO都這樣還是只有Java(相較其他OO語言,只對Java比較熟悉一點...) 類別名稱常用名詞,以大寫開頭(Pascal Case); class ImageSprite; 屬性名稱、參數名稱常用名詞,小寫開頭(Camel Case); float myWidth; 方法名稱常用動詞開頭,小寫開頭(Camel Case); runFast(); createTable(); 介面名稱常用形容詞,以大寫開頭(Pascal Case)。 interface Storing; 介面的命名通常會加上I:例如Customer類別要實作ICustomer介面 天吶~記不完,程式設計這種東西呢...最好的方法就是 多寫,養成習慣!! 羨慕那些良好的Coding Style,可以寫出漂亮、乾淨的程式>< 菜鳥如我呢,也只能沒日沒夜的co

網頁應用程式開發的一些基礎觀念

圖片
今天又是一蹋糊塗的課程,大致整理一下把內容規程三塊吧 1. JSP、JavaBean和Servlet介紹 2. 系統開發分層概念 3. MVC模式 ----------------------------------------------------------------------------------------------------------- 1. JSP、JavaBean和Servlet介紹 JavaBean跟Servlet都是Java類別。 但Servlet是繼承自javax.servlet.HttpServlet,所以可以收Httprequest和送Httpresponse等網頁應用程式的基本功能。 而JavaBean就單純的是個Java類別,可以繼承自任何類別;其用途是介於JSP和Servlet之間當作傳遞的橋樑。似乎又可以分為兩種用途:工具或是單純的參數物件 相關參考連結: JSP、Servlet 與 JavaBean 的組合應用 ---------------------------------------------------------------------------------------------------------- 2. 系統開發分層概念 三層式架構:   這裡的 三層指的是Presentation Tier、Business Tier、Data Tier ! 圖片來源:http://criticaltechnology.blogspot.tw/2011/09/mvc-in-three-tier-architecture.html 在古代的應用程式是只有兩層:前端的表現層跟後端的程式+資料庫。 但在現今的環境下,我們已經把程式跟資料庫分離,讓 資料維護 以及 程式維護 獨立。 因此現今的網頁應用程式就分成三層,讓各層的工作更加確切跟獨立。 而我一直把這三層式架構跟MVC模式喇在一起,傻傻分不清楚。 其實 兩者是不同的東西 ,三層式架構是軟體架構。 而MVC模式則是在程式設計上遵循的一個方式,也就是設計模式,讓程式設計師跟UI設計師可以更清楚的分工。 如果把兩者拉在一起看的話,M-V-C三者的集合大致上就是做

泛型是什麼?

今天又聽了一堆名詞....記都記不完,也聽不太懂XDD 只好花時間問Google做功課 進入正題,泛型簡單來說就是用來增加彈性,例如當我們 有同一個演算法,可是要處理的參數型別有很多種 ,就可以透過泛型來設計。 舉例來說List、ArrayList這些都有泛型的設計,所以我們在使用時可以進一步限制他們的型別。如List<String>、ArrayList<Customer>(Customer是自己設計的類別) 接著看泛型的使用,直接先看例子: class Node< T >{      private T  value;      T getValue(){           return value;      }      setValue( T value){            this.value = value;      } } 當我們在使用此Class時 Node< String > node = new Node< String >(); 就會做出下面這個Node class Node< String >{      private  String  value;       String  getValue(){           return value;      }      setValue( String  value){            this.value = value;      } } 那我們如果是其他的型別 Node< int > node = new Node< int >(); 則會做出下面這個Node class Node< int >{      private  int value;       int  getValue(){           return value;      }      setValue( int  value){            this.value = value;      } } 上面這個例子就可以看出來Node這個Class用到了泛

Eclipse環境設定

有鑑於Eclipse可能重灌或在其他設備上使用,把一些常用的設定筆記下來。 把提示的功能設為所有字母 工具列的Windows -> Preferences -> Java -> Editor -> Content Assist 1.勾選 "Enable auto-activation" 2.Auto activation delay 為提示出現的延遲時間,可以設為 0 3.Auto activation triggers for Java 為遇到何種字元會自動啟動提示,預設只有 dot,改為.abcdefghijklmnopqrstuvwxyz(, 移除一些不需要的套件 工具列的Help > About Eclipse 點選左下角 Installation Details。 點選要更新或移除的套件,下方會有 update 或 remove 可選擇。

API、Method和Library是什麼東西和關係?

圖片
這三者我一直搞不清楚,有時候API跟Method好像差不多,有時候覺得API概念不就跟Library一樣嗎? 後來發現這三者差別,需要視它們是對於一個"應用程式"而言是在什麼位置。是應用程式本身,還是不相關的應用程式,還是想要與應用程式互動的外部應用程式。 先來個例子: 今天有一個甲應用程式提供了API ReturnNumber(int a) 而甲應用程式裡面的處理是 int ReturnNumber(int a){ return round(random(a)); }; 接著我們一一解釋它們各是甚麼。 round()、random():是由內建library提供的兩個method ReturnNumber():是一個自己寫的Method,但因為我們提供它給外部使用,所以也是個API。 假設乙應用程式用了ReturnNumber()這個API,則只能傳進一個參數a,實際上他不知道這個API裡面寫了什麼,只能透過甲提供的文件說明來知道用途。 這個例子可以看到三者的實例,接著再來進一步說明。 ----------------------------------------------------------------------------------------------- API、Method和Library的關係 【Library】 函式庫,指將一群已經寫好的Method(Function)包成一個Library,當我們import這個Library後就能使用其包含的Method。(此處只是個程式語言的稱法不同,Method指Java、Function指C) 【API( A pplication P rogramming I nterface)】 應用程式介面,指提供給 外部程式 存取或是已經寫好的功能,事實上可以把它當作一群Method的集合,外部程式只能用這些Method。 【Method】 在Java稱為Method,類似C的Function,但不完全相同,這又是另一段故事了。 (在物件導向中的Method是綁定Class,所以要用Method一定要先實體化一個Object。ex. student.gohom

JAVA軟體開發相關環境設定與名詞解釋

最近真的被洗臉洗滿慘的.... 一堆東西原來都不懂,或是懂得根本就是皮毛中的皮毛;現在在環境逼迫的壓力下,要一夕之間快速成長XDD 趕緊做功課跟筆記 IDE ( I ntegrated D evelopment E nvironment):整合開發環境, 【常見的IDE】 Eclipse :開源免費的IDE,可以利用很多plug-in來開發不同語言的程式(C++的CDT, Python, PHP的PDT, WEB APP的WDT)。 Microsoft Virtual Studio :閉源付費的IDE,有一系列的產品for Windows各平台,號稱地表最強大的IDE。用於開發微軟的平台上的程式(Windows Desk, Windows Phone, .NET Framework等)