WEB开发网
开发学院手机开发Symbian 开发 Symbian 开发的22条军规 阅读

Symbian 开发的22条军规

 2010-05-31 20:16:00 来源:WEB开发网   
核心提示:{If(iSomeServer){iSomeServer->Close();delete iSomeServer;}}Ⅴ:在NULL指针上调用函数,Ⅵ:函数调用另一个函数,Symbian 开发的22条军规(2),而其使用的变量已经超出范畴,例如:把一个栈变量传送到一个异步函数的回调(callback)里,常见的编

{

If(iSomeServer)

{

iSomeServer->Close();

delete iSomeServer;

}

}

Ⅴ:在NULL指针上调用函数。

Ⅵ:函数调用另一个函数,而其使用的变量已经超出范畴,例如:

把一个栈变量传送到一个异步函数的回调(callback)里。

6、 在系统资源不够的情况下,得体的处理失效情况是非常重要的。最受限制的资源通常是系统RAM,因此您需要注意正确的处理内存不足的情况。采用“两端构造方法”和如下所述的CleanupStack机制,对这种防御性编程来说是必不可少和极其重要的。

7、 对带“R”字头、具备Close()方法的类,总是使用CleanupClosePushL()。这将确保当Leave事件发生时,它们会被恰当的清除。例如:

RFile file;

User:LeaveIfError(file.Open(…));

CleanupClosePushL(file);

CleanupStack::PopAndDestroy(&file);

对用Release()或Destroy()的“R”类,亦可使用CleanupDeletePushL()及 CleanupRelasePushL()来取代Close()。

8、另外,请记住CleanupStack机制是可扩展的,面对所有Leave事件,都可以用它来有效的清除任何对象。即使您需要处理的是较复杂的情况,也不应该忽略采用正规的清理机制。欲进一步了解TCleanupItem,请参阅Symbian OS Library文档。

9、倘若您意图对HBufC变量重新分配资源,在清除它们之后,总是将其设为NULL。由于HBufC的资源分配或其再分配可能会导致Leave事件的发生,从而可能会出现析构函数试图删除已经不存在的HBufC变量的情况。当然,对于任何由堆分配资源的变量而言都应如此,对HBufC变量采取此做法更是已经成为普遍的使用模式。

10、 当必须采用自己的TRAP时,请忽略所有的报错。常见的编码错误是:

TRAPD(err, DoSomethingL());

If(err == KErrNone || err == KErrNotFound)

{

//Do something else

}

这意味着其他错误码都被忽略。然而,倘若您非用上述模式不可,应采用Leave机制来处理其他错误:

TRAPD(err, DoSomethingL());

If(err == KErrNone||err == KerrNotFound)

{

//Do something else

}

上一页  1 2 3 4 5  下一页

Tags:Symbian 开发 军规

编辑录入:coldstar [复制链接] [打 印]
赞助商链接