Time of Update: 2018-12-07
劣質代碼產生的另外一個原因是管理者的誤導,具體的誤導行為有如下幾種形式:1. 莫名其妙的代碼規範 代碼規範是為了能夠讓團隊的程式員寫出的代碼像是一個人寫的。本身是好事,但是如果代碼規範制定的時候只是照搬照抄,那麼代碼規範很可能淪為損害代碼品質的幫凶。 A. 每行修改的代碼都要加註釋 每行修改的代碼都要增加註釋是在沒有版本管理工具的時候的做法。因為這樣可以對比修改的代碼。
Time of Update: 2018-12-07
CVS全稱叫做:Concurrent Version System。並發版本系統。經常出現命令運行錯誤且不易修複。有Eclipse外掛程式 Visual Source Safe官方提醒需要經常備份資料。和Visual
Time of Update: 2018-12-07
6.Null 物件模型 當需要訪問一個對象有可能是空的時候,需要進行空校正。 比如,下面的例子。1 public class User {2 int id;3 String name;4 public void save() {5 System.out.println("Save user");6 }7 } 1 public void saveUser(int id, String name) {2 User user =
Time of Update: 2018-12-07
OpenGL中的棧的作用的作用是儲存當前矩陣 pushMatrix() 作用聲明一下 圖形學中的三維座標變化:OpenGL當中的座標變化過程中儲存當前矩陣(包括投影矩陣、變換矩陣,等等)下面代碼簡單模仿了矩陣的儲存與恢複。代碼:(應用了STL中的棧資料結構,自己實現請跟帖) 1 #include "stdafx.h" 2 #include <iostream> 3 #include <stack> 4 #include "Windows.h" 5 using
Time of Update: 2018-12-07
一個語言的活力,在於庫的豐富與否!動態,靜態庫的發布和使用。這裡給大家一個簡單解釋!要真正理解,得動手試試啊。動態指的是隨時用隨時調用,並沒有載入到可執行程式裡面,而是獲得一個函數或者變數的地址。用的時候去沿著地址取。靜態指的是不管你用不用都放那裡。用你就用。不用也放那裡。1.動態連結程式庫:動態顧名思義,是在程式運行時候用到哪裡調入那裡的方式。對於動態庫的應用(在windows上)主要兩種方式。 1.1自動匯入。 首先,我們來發布一個dll庫,過程:VS
Time of Update: 2018-12-07
自表達代碼的的特點1. 代碼的傳回值意思明確看一個報名程式的書寫,這是採用非自表達方式書寫的。 1 public String registerLesson(int userId, int lessonId) { 2 int code = checkUserId(userId); 3 if (code != 0) { 4 return "user does not exist."; 5 } 6 7 code =
Time of Update: 2018-12-07
加班費本來是保護勞動者的制度。但是實際操作中,它卻淪為賞惡罰善的工具,促使著企業朝著更差的方向發展。我並不是要反對加班費制度,畢竟這種對於勞動者的保護制度應該擁護。但是,如果研究加班的產生原因以及結果,就不難發現加班費其實滋長了加班,並降低了開發效率。這是一個行為模式的問題:加班 -> 加班費(經濟補償) -> 沒有人約束 -> 繼續加班 -> 得到更多經濟補償 ->
Time of Update: 2018-12-07
然後,我們實現點擊小球的動作。點擊小球的時候,分為兩步,第一步:選中;第二步,清除。本章先研究選中。首先,我們需要瞭解點擊的小球的位置,但是,之前的設計並沒有傳入相關的參數。所以我們先來重構BallActionListener 1 package org.stephen.bubblebreaker.listener; 2 3 import java.awt.event.ActionEvent; 4 import java.awt.event.ActionListener; 5 6
Time of Update: 2018-12-07
產生劣質代碼的另外一個原因是對編程環境的不熟悉。原本想簡略講一講這一章的,網上關於如何使用IDE的文章到處都是,特意寫這麼一章給人一種湊數的感覺。但是,回到現實當中,當我發現有這樣一些行為的時候,深感對於編程環境的不熟悉是一個造成不能集中精力去思考的很重要的原因之一。這些行為是(在Eclipse裡):1. 從行尾移動到行首: 不停地按左鍵。 正確的方法是按Home2. 為某個變數改名: 拖動捲軸,肉眼搜尋,然後用Backspce刪除找到的單詞,再把複製的名字粘貼進去。
Time of Update: 2018-12-07
關於幀緩衝的總結本來想帶上例子的,發現自己懂得太晚了,沒必要了。寫下自己的理解就行了。1. 緩衝區 緩衝區是一塊記憶體或在相應硬體中開闢的空間,目的是為了儲存像素資料中的相關資訊。根據緩衝中不同的作用,和功能分為顏色緩衝、模板緩衝、深度緩衝、積累緩衝等(有的根據具體作用還有其他緩衝)。同意成稱為 幀緩衝!2. 概念、原理、OpengGL實現
Time of Update: 2018-12-07
本章,我們來討論如何為遊戲加上動作。先從整體上考慮,很多Java例子程式喜歡直接在代碼中加入:button.addActionListener(new ActionListener() { public void performAction(Event e)
Time of Update: 2018-12-07
1.物件導向編程(Object Oriented Programming) 物件導向編程把所有的事物都抽象為對象。即使虛擬存在也要抽象為對象,比如:關係,狀態;有些即使在客觀世界中不被定義為對象的東西在物件導向的世界裡也會被定義為對象,比如:行為,動作。
Time of Update: 2018-12-07
組態管理(Configuration Management)是為了確保軟體開發過程中的產品的一致性、穩定性、可追溯性、復原性等一系列目的而採取的技術上和管理上的手段的總稱。往往由於軟體開發過程當中重心放在了“開發”本身,組態管理往往被當成了不重要的環節而被忽略了。提起組態管理,很多人都會認為把文檔和代碼放在版本管理工具裡就叫做組態管理了。頂多是做做目錄劃分,使用權限設定,簽入簽出規則設定等。做到上述這些只是做到了版本管理(Version
Time of Update: 2018-12-07
RumtimeException是一種UncheckedException。UncheckException是一種不需要在方法簽名中聲明的異常類型。廣為知道的RuntimeException的子類有NullPointerException,StringOutOfBoundsException。ArrayIndexOutOfBoundsException之類的。在代碼啟動並執行過程中由於變數為空白或者數組越界等情況就會發生這種異常。當異常發生的時候,由於沒有try-catch會產生程式意外退出的情
Time of Update: 2018-12-07
一般軟體開發組織,在軟體項目結束時會進行項目總結會,利用項目中的統計資料對項目中發生的成敗得失進行總結分析,然後制定出改進計劃,以希望在下次項目可以做的更好。然而,多年過去之後,對比一下現在的資料和當初的資料,基本上可以得出一個結論:這麼多年沒有絲毫改進,甚至還有退步的跡象。 這是發生在很多地方的現象。為什麼會發生這種現象呢?本人就那些無用的項目總結會以及無用的流程改善建議進行原因分析以及提出解決對策。
Time of Update: 2018-12-07
軟體開發到處都需要英語。對於人英語不是母語來說,英語能力不足直接影響到代碼中用到的單詞以及文法,以及能夠表達的意思。1、單詞試試看,下列單詞,不查字典能認識幾個:a.wildcardb.assertionc.infinited.inherite.concurrentf.offsetg.abbreviationh.acceleratei.cryptoj.cipherk.gregorianl.exponentm.asteriskn.semicolono.flushp.atomicq.EOFr.SSL
Time of Update: 2018-12-07
劣質代碼帶來的劣質體驗 時下很流行討論使用者體驗。當我們瀏覽一個網站或者使用一個軟體的時候,如果它的介面組織的不夠友好,我們就會感到沮喪,離開,而且不想再次回來。程式員修改程式的時候所產生的體驗就是對代碼的體驗。他們時而因為代碼的精彩而感到興奮;時而因為代碼的結構混亂而憤恨不已;時而因為某個精彩的方案而感到激動;時而因為某個糟糕的命名而焦頭爛額。就像網站的使用者體驗包括頁面配置、文字、圖片、連結等各種屬性一樣,代碼通過其命名、注釋、風格和結構給程式員帶來不同的體驗。
Time of Update: 2018-12-07
下一步,我們來實現消除。消除分兩步,第一步消除選中的小球,第二步,降落。先說消除,在BallActionListener中進行分支處理即可。1 public void actionPerformed(ActionEvent e) {2 Game game = Game.getInstance();3 if (game.isSelectedBall(x, y)) {4 game.destroySelectedBalls();5
Time of Update: 2018-12-07
劣質代碼令人深惡痛絕。那麼它們究竟是怎麼產生的呢?只有明白了它們的產生根源,才能夠從根本上杜絕劣質代碼的產生。劣質代碼的產生主要來自於幾個方面:1. 理論知識的匱乏 缺少理論知識,以至於不知道什麼是優質代碼,什麼是劣質代碼。本文將從品質、2. 程式設計語言知識不足 由於對程式設計語言的接觸只限於表面的常見功能,更多的進階功能從來沒有用過,所以不知道有能夠寫出更精簡的代碼的方法。 本文將以Java為例,闡釋那些進階而又不常用到的功能。3. 編程工具的不熟悉。
Time of Update: 2018-12-07
實體(Entity)是情境中可移動對象的執行個體,它可以是一輛車、一個人、一條狗等等,實體(Entity)在世界(World)情境中不一定非要一個固定的座標位置。實體(Entities)是以網格(Meshes)作為自身基礎的,網格(Mesh)對象包括了一整套用來描述自身模型的資料,在廣域範圍(World