iT邦幫忙

2

Code Generation 2:利用JAVA將AS檔案轉成TS檔案型態-轉方法

可以直接轉換該行程式後,我就想說是否一次轉一個方法。接下來只有每個方法都複製過來,按執行,就可以將程式寫完了。
(但內心其實也有想說一次轉一個檔案,但尤於以前沒有轉過,而且我來這個專案只有三天,和別人說自已有寫轉檔的小程式,並沒有被認同。所以不敢給自已下這個目標。所以我先階低梯度,先切分成一個一個方法來轉。)

在這個方法中SUBNO是ID的名稱,Validate為欄位檢核。有Validate的方法都會對應到Html的某個屬性。

/**
 * 
 *科目代號變動判定
 * 
 */	
public function reactToSUBNO$Validate(event:ValidationEvent):void
{
	.....
}

第一部份:以方法做一個單位去轉檔案,要思考的點
1.就是程式要知道那一行是一個方法
2.比較出是那一個方法
3.取出id
4.替換出現在程式的格式

而在這個專案中
舊:public function reactToSUBNO$Validate(event:ValidationEvent):void
新:validateSUBNO()

要將舊的資料轉成新的資料,

1.我判斷function來確認是否是方法。
2.判斷是Validate,
3.透過indexOf()的方法取出SUBNO,
4.將validate+SUBNO()取代舊有的資料。即可。

於是會轉成以下的格式

/**
 * 科目代號變動判定
 */
validateSUBNO(event: CustomEvent)
{
....
}

第二部份:
因為validate的方法是由html呼叫,所以我先寫好呼叫的方法,讓程序員可以直接複製內容貼到Html裡。

//(systexValidate)="validateSUBNO($event)"

第三部份:
優化畫面,減少不必要的東西,在方法的註釋中我不需要太多的號,所以我就該行只行一個號的資料也刪除掉。

最後輸出如下:

/**
 * 科目代號變動判定
 */
//(systexValidate)="validateSUBNO($event)"
validateSUBNO(event: CustomEvent)
{
....
}

程式碼如下:

if (str.indexOf("Validate") >= 0) {
    int index0 = str.indexOf("reactTo");
    int index1 = str.indexOf("$");
    if (index0 > 0 && index1 > 0) {
        str = "//(systexValidate)=\"validate" + str.substring(index0 + 7, index1) + "($event)\"\n" + "validate"+ str.substring(index0 + 7, index1) + "(event: CustomEvent)";
    }
}

結合前一篇文章,這樣就把一個方法的內容連同註解都翻譯好了。

寫完隔天,我分享我的程式給我們組的組長,我們組長看了我的程式,和我說:「這我也會。然後就不太理我。」
其實我覺得我寫了一個不錯的程式,我分享給幾個同組的人,但沒有人說:「棒棒」

但這沒有影響我繼續優化。


尚未有邦友留言

立即登入留言