發表文章

目前顯示的是 1月, 2018的文章

系統重構(一系列等量變換)_技法1.抽取方法(Extract Method)_技法2.抽取類別(Extract Class)_技法3.抽取介面(Extract Interface)

圖片
最近開始接獲到一項需求 但是負責維護這部分相關程式的前人們 都不在 那映入眼簾的就是 一大堆function 而且每個 function 都是非常飽滿、好的大概50~60行多則900行 一個函數就這麼多行   = =||| 其餘大致上就是繼承關係看不出脈絡 或是主要的流程看不出端倪 有些類有這函數和變數   有些類沒有 有的路徑指定各有各自的路徑字串等等 真的是非常難閱讀且不易後續維護 也因此開始接觸了  人生中第一次所遇到的 系統程式重構的重責大任 注意重構等同於高空走鋼索 一旦改錯功能就會造成系統諸多異常 所以必須嚴謹再嚴謹(尤其是每次commit code 之前最好都再三留意) 何謂重構??? 重構  主要是 要求對太過於零亂的系統程式碼去進行 一個等量變化的修復過程好利於後欲維護與提高程式邏輯可閱讀性 在重構過後 甚至過程進行中的程式碼 皆不可影響外在功能 、 不可新增多於功能 也因此有人說它是一種程式碼的等量變換 必須以不改變程式外在行為作為前提 去改變程式內部結構以提升設計品質 (可閱讀性、未來維護性、Bug 修復、甚至效能耗時改善) 可以想成  寫數學計算式子 你可能會節省很多行計算過程(用橡皮擦  清除掉過去計算部分) 只保留最精簡的式子 為何要重構??? 現行系統運行就好好的  幹嘛還要搞個重構這麼麻煩費時 當你發現接獲需求要你從現有系統去擴充功能時 這時發現無法很方便增加新功能、修改邏輯 那就是該重構的時機了 重構的主要目標 A change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior. 改成較容易理解與降低修改成本 以下我們來舉例 技法1.抽取方法(Extract Method) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

Linux Shell腳本_學習筆記2_自定義變數_環境變數_變數賦值_單引號雙引號差別

圖片
自定義變數_環境變數 Linux 作業系統環境中變數可以區分成如下兩種 (1) 自定義變數(Local)  -->作用範圍較小(Ex:bash 內的變數) (2) 環境變數(Environment)  --> 作用範圍較廣 set  查看所有變數 env 查看環境變數 那這裡透過  set | less  我們可到一小部分起初 自定義變數 建議盡量別  直接  set  會劈哩啪啦一次刷下來很多內容 會不知從何看起 那這邊就有看到  我們在上一篇有看到的 左邊為變數名   右邊為變量數值 BASH=/usr/bin/bash 那在改為  env 後 就會看到 跟 windows 很像的PATH路徑設置的內容呈現 變數賦值 自定義變數部分的相關格式: (1)變量設置 VARIABLE = value (2)獲取所設定支變量數值 echo $ VARIABLE 當然指派浮點也不成問題 只是就要切記左右皆不可有空白 單引號雙引號差別 那你會問如果我想指派一個字串 而且當中含有空白 此時就是  雙引號  派上用場的時候了 那你也可以用  單引號來進行  字串承接 表面看起來感覺都一樣 但其實有差異 單引號如果中間所包覆的 字串  含有 $變數名 它並不會去取出對應變數名之變量 雙引號則會  這是本次分享

Linux Shell腳本_學習筆記1_自動化運維基石_寫第一支Shell腳本程式

圖片
Shell在英文意思是指  貝殼、(椰子的)外殼 Linux Shell A linux shell is a special-purpose program designed to read commands typed by a user and execute appropriate programs in response to those commands. 是用來提供一種命令列介面(CLI / Common Line Interface) 供我們做一系列與系統操作相關的命令。 最早起源  1960年代  路易斯.普讚(Louis Pouzin) 這位法國人 他寫了一種程式 叫  "RunCom" 60年代那時 計算機電腦 操作是非常繁瑣的 透過其開發的此程式去簡化這些繁瑣操作 截自:  http://www.bogotobogo.com/Linux/linux_tips2_bash.php Linux Shell  歷史與版本 第一個 --> 1971年 Bell Lab   Thompson shell : Unix Shell 第二個 --> 1978年 Bell Lab   Bourne shell   :Standard Unix Shell Linux發行版默認shell --> Bash Shell (Bourne Again shell) 其他版本shell : ash , korn , tcsh , zsh , dash(ubuntu ) 我們可透過  Shell 腳本去編寫自定義的命令列集 將手動操作程式自動化 自動去執行日常例行事務操作 來達到所謂日常系統自動化管理 ============================================================== 在此我是用  CentOS  7  作業系統來演示 可以用  virtual box 自行去搭建學習環境 PART 1.生成一支shell script Step1. 建立 於當前使用者家目錄底下 首先建立一個目錄名為 shellscript 使用  touch 去新建空文檔 Step2. 撰寫 (使用

JAVA程式語法_物件導向Part2_static關鍵字使用之便利_final關鍵字使用

圖片
static關鍵字使用之便利 各位還記得之前分享了 JAVA OOP 我們拿了  車子  來進行比喻 這次一樣 假設我們是一個顧車的人士 我們有很多台車子要顧 那由於我們顧車會需要得知許多車子各自的特性 哪一廠牌 哪一車款 總價多少 里程數多少 車子的持有人是誰 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package javaoop ; /** * * @author chous */ public class Car { //Properties String Type ; int Model ; double Price ; double Mileage ; String Owner ; public Car (){ } public Car ( String Type , int Model , double Price , double Mileage , String Owner ){ this . Type = Type ; this . Model = Model ; this . Price = Price ; this . Mileage = Mileage ; this . Owner = Owner ; } //Methods doubl