Posts
TypeScript - Lambda
TypeScript 支援 Lambda 語法,語法如下:
(input parameters) => expression (input parameters) => {statement;} 寫起來就像下面這樣:
var Execute = (cmd: string, ...params: string[]): void => alert(cmd + "(" + params.join(", ") + ")"); Execute("Test", "Param1", "Param2"); {% img /images/posts/TypeScriptLambda/1.png %}
read morePosts
TypeScript - Rest Parameters
TypeScript 的方法支援不定數量的參數,使用上只要在最後一個方法的陣列參數前面加上 ... 即可。
像是下面這個例子,定義了一個接口,可傳入要執行的命令名稱與命令要帶入的參數,因為命令的參數的個數可能不定,所以這邊就可以用 Rest Parameters 去做。
function Execute(cmd: string, ...params: string[]): void { alert(cmd + "(" + params.join(", ") + ")"); } Execute("Test", "Param1", "Param2"); {% img /images/posts/TypeScriptRestParameters/1.png %}
read morePosts
PL/SQL amp; SQL CODING GUIDELINE 14 - Never overload data structure usages
條款十四是說不要去覆寫變數。
像是下面這樣外層與內層宣告了一樣名稱的變數,是不建議的寫法。
<<main>> DECLARE v_str VARCHAR2(30); BEGIN <<sub>> DECLARE v_str VARCHAR2(4000) ; BEGIN … END sub; END main; 建議使用上還是應該要將變數名稱錯開。
read morePosts
PL/SQL amp; SQL CODING GUIDELINE 13 - Avoid initializing variables using functions in the declaration section
條款十三是說要避免在變數宣告的同時呼叫 function 去初始變數。
DECLARE l_company_name VARCHAR2(30) := util_pck.get_company_name(in_id => 47); BEGIN … END; 因為在變數宣告的地方呼叫 function 去初始變數,function 發生例外時是無法攔截處理的。
因此要像下面這樣將宣告與初始拆開處理。
DECLARE v_str VARCHAR2(30); BEGIN <<init>> BEGIN v_str := util_pck.get_company_name(inId => 47); EXCEPTION WHEN VALUE_ERROR THEN ... END init; END;
read morePosts
PL/SQL amp; SQL CODING GUIDELINE 12 - Avoid comparisons with null value
條款十二是在說當判斷變數是否為 null 時,不要像下面這樣使用 = 去判斷。
DECLARE v_str VARCHAR2(30); BEGIN if v_str = null then … end if; END; 因為 null 不等於任何東西,即使是 null 也不等於 null。
{% img /images/posts/PLSQLCopRule12/1.png %}
正確的方式應該是用 is 或 is not 去做判斷。
DECLARE v_str VARCHAR2(30); BEGIN if v_str is null then … end if; END;
read morePosts
PL/SQL amp; SQL CODING GUIDELINE 11 - Never initialize variables with NULL
條款十一是說不要將變數初始為 NULL。
DECLARE v_str VARCHAR2(30) := null; BEGIN ... END; 因為預設就是初始為 Null。
DECLARE v_str VARCHAR2(30); BEGIN ... END;
read morePosts
PL/SQL amp; SQL CODING GUIDELINE 10 - Try to use subtypes for constructs used often in your application
條款十是在說如果有些常用的型態使用,建議將它設成 SubType,像是下面這邊 VARCHAR2(4000) 程式中如果常用的話,就可以將它設成 SubType。
DECLARE v_str VARCHAR2(4000); BEGIN … END; 這邊將它設成名為 STRING_MAX 的 SubType,後續可直接拿來宣告使用。
CREATE OR REPLACE PACKAGE PKG_SUBTYPE AS SUBTYPE STRING_MAX IS VARCHAR2(4000); END PKG_SUBTYPE; DECLARE v_str PKG_SUBTYPE.STRING_MAX; BEGIN ... END;
read morePosts
PL/SQL amp; SQL CODING GUIDELINE 9 - Try to have a single location to define your types
條款九主要是在描述型態的定義要集中一處放置,以 Oracle 來說型態的定義可以放置在 DB 的 Types 下。
{% img /images/posts/PLSQLCopRule9/1.png %}
也可以建造個 Package 集中放置,這邊建議是挑選一個地方放置即可,避免有些型態的宣告放置在 Types 下,而有的在 Package 下。
選用上要注意 Oracle 內的型態有的只能在 Database 下使用,無法在 Package 下使用,像是 Object 型態。
read morePosts
TypeScript - Default Parameters
TypeScript 的 Function 支援 Default Parameters,使用上只要在參數名稱後面帶入預設的參數值,當呼叫方法時忽略該參數,該參數則會以預設的參數值下去運行。
像是下面這樣:
function sayHello(name: string = 'World') { var msg:string = 'Hello~'; if (name) msg += name; console.log(msg); } sayHello(); sayHello('Larry Nung');
read morePosts
TypeScript - Optional Parameters
TypeScript 的 Function 支援 Optional Parameters,使用上只要在參數名稱後面加上 ? 即可,但需注意 Optional Parameters 必須放在 Required Parameters 的後面。
使用起來會像下面這樣:
function sayHello(name?: string) { var msg:string = 'Hello~'; if (name) msg += name; console.log(msg); } sayHello(); sayHello('Larry Nung');
read more