2021年3月19日 星期五

[TDD]3A原則

  在撰寫單元測試的程式碼時,有個3A原則,來輔助設計測試程式,可以讓測試程式更好懂。

3A原則如下:

  1. Arrange: 初始化目標物件、相依物件、方法參數、預期結果,或是預期與相依物件的互動方式
  2. Act: 呼叫目標物件的方法
  3. Assert: 驗證是否符合預期
 public void UnitTest3ARule() {
     //Arrange

     //Act

     //Assert
 
}

[物件導向]SOLID

SOLID所包含的原則是通過引發編程者進行軟體原始碼代碼重構進行軟體的代碼異味清掃,從而使得軟體清晰可讀以及可延伸時可以應用的指南。SOLID被典型的應用在測試驅動開發上,並且是敏捷開發以及自適應軟體開發的基本原則的重要組成部分。 

SOLID 是5大原則的簡稱,分別為:

                  S = Single-responsibility principle (SRP) = 單一職責原則

                       -認為「物件應該僅具有一種單一功能」的概念

                  O = Open–closed principle (OCP) = 開放封閉原則

                       -軟體體應該是對於擴充開放的,但是對於修改封閉的

                  L =Liskov substitution principle (LSP) = 里氏替換原則

                       -程式中的物件應該是可以在不改變程式正確性的前提下被它的子類所替換的

                  I = Interface segregation principle (ISP) = 介面隔離原則

                       -多個特定客戶端介面要好於一個寬泛用途的介面

                  D = Dependency inversion principle (DIP) = 依賴反向原則

                      -依賴於抽象而不是一個實例

2020年1月21日 星期二

[ubuntu18.04] 關機過慢問題 (需要倒數90 sec)

修改/etc/systemd/system.conf:
$ sudo vi /etc/systemd/system.conf
找到這行:#DefaultTimeoutStopSec=90s
可直接修改或在其下新增一行 DefaultTimeoutStopSec=10s
存檔後開機之後生效

2020年1月10日 星期五

[ubuntu18.04]輸入法安裝


 1.進入系統設定值/語言支援, 依照系統的建議的更新下載 
 2.在軟體中心安裝fcitx、fcitx設定、fcitx-qimpanel-configtool 
 3.terminal之下安裝新酷音輸入法:$sudo apt-get install fcitx-chewing
    或是 Synaptic之下安裝新酷音輸入法 fcitx-  chewing
4.預設輸入法框架: fcitx
5.(重新開機)小鍵盤(或小企鵝或任何顯示中、英、酷字樣的按鈕)就會出現在右上方選單列
  參考 http://wenxintaichi.blogspot.com/2018/06/blog-post_29.html

2019年11月4日 星期一

顯示git branch 方法

在 ~/.bashrc新增底下內容
# show git branch
function git_branch { ref=$(git symbolic-ref HEAD 2> /dev/null) || return; echo "("${ref#refs/heads/}")"; } PS1="${HOSTNAME}:\w\[\033[1;32m\]\$(git_branch)\[\033[0m\]$";

2017年8月27日 星期日

[android]系統架構及開機流程圖


一個大陸網站整理不錯系統架構流程
http://blog.csdn.net/CCJHDOPC/article/details/54316154

[android]boot.art and boot.oat 解釋

1. boot.art是一個header + class object的映射內存。
   主要包含的是在framework/preload-classes.txt裡面列出的類的對象。
2. boot.art裡面使用的都是絕對地址,因此boot.art必須被加載到固定位置
3. boot.oat裡面如果要使用某個類、field、method,只要它在boot.art中被
    定義,那麼就可以直接使用決定地址來訪問
4. boot.art在ART中放在imagespace中,GC除外
5. boot.art和boot.oat的加載地址都是32位的,即便是在64位設備上,高32位都是0.
6.不要以為把boot.art映射到內存,裡面的class就可以直接用了。
   那些初始化內部代碼native方法或者有loadlibrary的代碼,還必須在加載後做最
   後的初始化,否則類的初始化不能有效完成

參考出處:https://www.zhihu.com/question/37786499/answer/92280385