不縮排就搗蛋!
louis今天跟我討論XPCOM文件上這一段應該是要很簡單的C++ snippet,
基本上我XPCOM不熟, C++尚可,
拿來文件上的Code大概長的像這樣:
NS_IMETHODIMP SampleFactory::QueryInterface(const nsIID &aIID,void **aResult)
{
if (aResult == NULL) {
return NS_ERROR_NULL_POINTER;
}
*aResult = NULL;
if (aIID.Equals(kISupportsIID)) {
*aResult = (void *) this;
}
else
if (aIID.Equals(kIFactoryIID)) {
*aResult = (void *) this;
}
if (aResult != NULL) {
return NS_ERROR_NO_INTERFACE;
}
AddRef();
return NS_OK;
}
看來看去實在是讓我皺眉頭...
哪有aResult等於NULL也return
不等於NULL也return
然後return完後面還有code的道理
反正這code看起來就是怪怪的, 但一下子卻看不出怪在哪...
因為...
...
這沒縮排又排的亂七八糟的code我是要怎麼讀啦!!!???
...
反正就是看的很難過 有股想把code拿去倒掉的衝動
後來才發現真正的文件裡長的是這樣:
NS_IMETHODIMP
SampleFactory::QueryInterface(const nsIID &aIID,
void **aResult)
{
if (aResult == NULL) {
return NS_ERROR_NULL_POINTER;
}
*aResult = NULL;
if (aIID.Equals(kISupportsIID)) {
*aResult = (void *) this;
}
else if (aIID.Equals(kIFactoryIID)) {
*aResult = (void *) this;
}
if (*aResult == NULL) {
return NS_ERROR_NO_INTERFACE;
}
AddRef();
return NS_OK;
}
我咧 這一縮排 會不會感覺差太多
連這段code snippet不用註解 要表達什麼都能看的清清楚楚.
雖然我不是很熟XPCOM, 也清楚看的出:
1. 在aIID是SupportsIID或FactoryIID的情況下
*aResult不會是NULL 而如果不是SupportsIID或FactoryIID就該回傳NS_ERROR_NO_INTERFACE;
2. 原先的code把倒數第六行if (*aResult == NULL)誤值成if (aResult == NULL) 是錯的...
跟之前不知在寫什麼時不同, 馬上就看出問題點在哪...
==
我還是常聽到有人說什麼python強制縮排怎樣怎樣的...
我只想說,
人要衣裝
佛要金裝
Code要給我排整齊啦!
2 則留言:
Python 就是要縮排XD,才會處理下一步,p.s.使徒大人您最近好嗎?
你可以用astyle叫他排好阿~
張貼留言