Posts
PL/SQL amp; SQL CODING GUIDELINE 24 -Try to use boolean data type for values with dual meaning
條款二十四,當值只有兩種狀態時,試著使用 Boolean 型態。
像是如果要表達的是是否為較大的數值,如果沒有特別的理由,那就不該使用數值表示,因為數值代表的意義沒有 Boolean 型態來的明確。
DECLARE v_IsBigger number(1) := 1; BEGIN DBMS_OUTPUT.PUT_LINE(CASE WHEN v_IsBigger = 1 THEN 'True' ELSE 'False' END); END; 若用 Boolean 型態表達會比較清楚。
DECLARE v_IsBigger BOOLEAN := true; BEGIN DBMS_OUTPUT.PUT_LINE(CASE WHEN v_IsBigger THEN 'True' ELSE 'False' END); END;
read morePosts
PL/SQL amp; SQL CODING GUIDELINE 23 - Always define your VARCHAR2 variables using CHAR SEMANTIC
條款二十三,使用 Varchar2 時總是定義 Char Semantic。
預設未定義時有可能指定的是 Byte,也有可能是 Char,端看 NLS_LENGTH_SEMANTICS 參數的設定,預設是 Byte。
DECLARE v_str varchar(200); BEGIN ... END; 但通常我們指定字串應該看的是字元數,建議是將其指定用 Char。
DECLARE v_str varchar(200 char); BEGIN ... END;
read morePosts
PL/SQL amp; SQL CODING GUIDELINE 22 - Never use zero-length strings to substitute NULL
條款二十二,不要用空字串去代替 Null 值。
在 Oracle 這邊不論是對的 Varchar 或是 Varchar2 型態賦予空字串,Oracle 都會將其視為 Null,所以這邊不建議將其設為空字串。
DECLARE v_str varchar2(4000) := ''; BEGIN DBMS_OUTPUT.PUT_LINE(CASE WHEN v_str is null THEN 'null' ELSE 'not null' END); END; 而是應該像下面,沒特別塞值時預設就是 Null。
DECLARE v_str varchar2(4000); BEGIN DBMS_OUTPUT.PUT_LINE(CASE WHEN v_str is null THEN 'null' ELSE 'not null' END); END;
read morePosts
PL/SQL amp; SQL CODING GUIDELINE 21 - Avoid using VARCHAR data type
條款二十一,避免使用 Varchar 型態。
Varchar 型態在工業標準上是可以儲存空字串的,但在 Oracle 這邊並未遵循這樣的標準,當將空字串存放至 Varchar 型態,Oracle 這邊會將空字串變為 null 值,就跟 Varchar2 型態是一樣的,但難保哪天會改回遵循工業標準。
DECLARE v_str varchar(4000); BEGIN … END; 因此在 Oracle 這邊建議不要使用 Varchar 型態,建議使用 Varchar2 型態。
DECLARE v_str varchar2(4000); BEGIN … END;
read morePosts
PL/SQL amp; SQL CODING GUIDELINE 20 - Avoid using CHAR data type
條款二十,避免使用 Char。
Oracle 的 Char 型態在宣告時需指定大小,宣告多大就佔多大。像是下面這邊筆者宣告了 4000 的 char,則該變數即佔了 4000,儘管這邊只賦予了短短的幾個字元進去。
DECLARE v_str char(4000) := 'test'; BEGIN DBMS_OUTPUT.PUT_LINE(Length(v_str)); END; 取而代之的是應該改用 varchar2 型態。
DECLARE v_str varchar2(4000) := 'test'; BEGIN DBMS_OUTPUT.PUT_LINE(Length(v_str)); END;
read morePosts
PL/SQL amp; SQL CODING GUIDELINE 19 - Try to use PLS_INTEGER instead of NUMBER for arithmetic operations with integer values (no decimal point)
條款十九,用 PLS_INTEGER 去表示整數。
如果要宣告整數,不要用 Number 型態去宣告。
DECLARE v_number number(38, 0); BEGIN ... END; 建議使用 PLS_INTEGER,因為使用 PLS_INTEGER 型態使用的記憶體會比較少,且效能上會快上三倍。
DECLARE v_number PLS_INTEGER; BEGIN ... END;
read morePosts
PL/SQL amp; SQL CODING GUIDELINE 18 - Avoid declaring NUMBER variables or subtypes with no precision
條款十八,避免在宣告 Number 型態的變數或是 SubType 時未設定整數位數。
像是下面這樣,變數宣告時未指定整數位數,預設精確度為 38 位。
DECLARE v_number number; BEGIN ... END; 如果使用上已經知道明確位數,那建議在宣告時還是明確的指定。
DECLARE v_number number(9, 2); BEGIN ... END;
read morePosts
PL/SQL amp; SQL CODING GUIDELINE 15 - Never use quoted identifiers
條款十五是說在變數宣告時,變數的名稱不要加上雙引號。
像是下面這樣,宣告的變數加上雙引號是合法的。
DECLARE "v_str" VARCHAR2(30) ; BEGIN … END main; 但不建議這樣宣告,建議還是不要加上雙引號。
DECLARE v_str VARCHAR2(30) ; BEGIN … END main;
read morePosts
TypeScript - Generics
TypeScript 支援泛型語法,使用方式如下:
function GenericsFunction<T>(param:T) { ... } ... class GenericsClass<T> { GenericsField:T; GenericsMethod(param:T) { ... } } 最後附上個簡單的使用範例:
function ShowMessage<T>(message:T) { alert(message); } ShowMessage<string>("test"); ShowMessage<number>(123); {% img /images/posts/TypeScriptGenerics/1.png %}
read morePosts
TypeScript - Class
TypeScript 的類別透過 class 關鍵字宣告,透過 new 關鍵字建立物件實體。
class MyClass { ... } var obj = new MyClass(); ... 建構子的透過 constructor 關鍵字宣告。
... constructor(...) { ... } ... 類別屬性的宣告,是透過 get/set 關鍵字定義 get/set 區塊。
... private _name: string; ... get name():string{ return this._name; } set name(value:string){ this._name = value; } ... 類別方法的宣告不需要加上 function 關鍵字,還可依需求套上不同的存取修飾符,不過目前支援 private/public,若不加上存取修飾服,預設宣告的是 public 的方法。
... MyFunction():void { ... } private PrivateFunction():void { ... } public PublicFunction():void { ... } ... 類別的繼承則是透過 extends 關鍵字。
read more