2010-09-24 16 views
3

有誰知道可以美化C++代碼以將括號添加到條件語句的工具嗎?我需要做的是改變:用於括住條件語句的工具

if (myCondition) 
    setDateTime(date, time); 

if (myCondition) 
{ 
    setDateTime(date, time); 
} 

但我必須這樣做數百次。我可能可以在perl中寫一些東西,但如果已經有一個工具,不想走這條路。我已經使用AStyle,但我無法找到如何使用它。

除了滿足客戶的編碼標準,我想這樣做的原因是,我不得不更換某些呼叫如上述呼籲setDateTime(date, time)setDate(date)setTime(time),我可以很輕鬆地做到用正則表達式,但結束了像這樣:

if (myCondition) 
    setDate(date); 
    setTime(time); 

顯然不對!!!

+0

我不知道這個工具。 Re regexp替換,你可以隨時替換'{setDate(date);時刻設定(時間); }' - 如果有一個額外的'{'和'}''無關緊要。 – 2010-09-24 10:58:24

+0

現在我們已經瞭解到,我們應該總是首先使用括號:)在旁註中,如果你有控制'setDateTime',我想你可以修改它來分別調用'setDate'和'setTime' ? – Default 2010-09-24 11:21:12

+0

@Michael:非常好,謝謝Steve Jessop指出這一點。我的客戶正在從一個子系統遷移到另一個子系統,理想情況下,完全徹底的休息並使用新的API而不使用任何「助手」可以使其看起來像舊API。這些都很好,但是當沒有人知道爲什麼引入助手時,可能會混淆視線(有意思的是,setDate等僅僅是一些例子,而不是真正的東西,這會涉及更多的內容)。多快(讀:便宜)這可以做到。 – 2010-09-24 11:56:12

回答

1

static inline void setDateTime(date, time) { setDate(date); setTime(time); }

關於if:請問的astyle選項--add-brackets不適合你的工作,與brackets=break結合起來呢?當我使用astyle時,我發現很難讓它做到我想要的。因此,如果您打算使用它,最簡單的方法是使用一組樣式參數定義編碼樣式準則,然後使用astyle來強制執行它們。

我並不那麼困擾不一致的風格,我個人認爲這是值得的,但隨後客戶總是勉強容忍正確。

+0

謝謝,看起來好像--add-brackets似乎正是我想要的。也就是說,我還沒有嘗試過。非常感謝。 – 2010-09-24 11:50:27

1
s/setDateTime(date, time)/{ setDate(date); setTime(time); }/ 
+0

謝謝。當然,確實有效,但它具有奇怪但通常是無害的副作用,即使它們不是有條件的,所有* setDateTime()調用都會被置於括號內。之後再次通過AStyle,結果代碼看起來很奇怪 - 一個代碼塊在沒有明顯的原因的地方。 – 2010-09-24 11:12:40

+0

是不是像這樣簡單的文字替換,宏是用來做什麼的?如果它們適用於任何事物,我的意思是;-) – 2010-09-24 11:56:15