1,下面是一個初級程序員都寫過的語句;比如x,y,z三個變量,分別控制A,B,C三個控件的顯示與隱藏
x=5 的時候 {A隱藏,B不隱藏,C不隱藏}
y=6 的時候 {A隱藏,B隱藏,C不隱藏};
z=7 的時候 {A不隱藏,B不隱藏,C不隱藏}
正常寫法:
-(void)initData
{
if (x == 5) {
self.aLab.hidden = YES;
self.bLab.hidden = NO;
self.cLab.hidden = NO;
}else if (y == 6){
self.aLab.hidden = YES;
self.bLab.hidden = NO;
self.cLab.hidden = YES;
}else if (z == 7){
self.aLab.hidden = NO;
self.bLab.hidden = NO;
self.cLab.hidden = YES;
}else{
}
}
但是實際你們在寫項目的時候肯定都遇到過情況比這多好多的時候,比如用戶是否登錄,是夠關(guān)注,是否購買,以及狀態(tài)A的時候可能需要隱藏一些控件,狀態(tài)B的時候需要隱藏另外一些控件,狀態(tài)C,D等等更有甚者,需要第一個接口里邊某個字段和第二個接口某個字段綜合起來判斷控件是否隱藏,所有種種的原因?qū)е潞髞砦易约憾疾恢喇?dāng)初的邏輯應(yīng)該是什么樣子。
所以我就想用下邊這種寫法:
-(void)setALabelStatus
{
self.aLab.hidden = (x == 5 || y == 6) ? YES : NO;
}
-(void)setBLabelStatus
{
self.bLab.hidden = (x == 5 || y == 6 || z == 7) ? NO : YES;
}
-(void)setCLabelStatus
{
self.cLab.hidden = (x == 6 || z == 7) ? YES : NO;
}
每個狀態(tài)我都記錄一個變量,你有10種情況,我就記錄10個變量,但是我沒見過有人這么寫過
所以我想請教大神們:到底怎么寫才是對的,對于這種條件特別多,而且條件里邊套條件,應(yīng)該怎么去寫,大家可以在這個例子上任意的更改需求,不要局限這個例子,歡迎大家踴躍討論
這個還是具體場景具體分析吧
假設(shè) x,y,z等變量遠(yuǎn)比A,B,C等控件多,那么就是第一種寫法,反之是第二種;
而且即便是第一種寫法,也不是你寫的這種,而是:
BOOL hiddeA = NO;
BOOL hiddeB = NO;
BOOL hiddeC = NO;
if (x == 5) {
hiddeA = YES;
hiddeB = NO;
hiddeC = NO;
}else if (y == 6){
hiddeA = YES;
hiddeB = NO;
hiddeC = YES;
}else if (z == 7){
hiddeA = NO;
hiddeB = NO;
hiddeC = YES;
}else{
}
self.aLab.hidden = hiddeA;
self.bLab.hidden = hiddeB;
self.cLab.hidden = hiddeC;
另外一種是像樓上所說位運算的思路,把幾個屬性抽成一個場景,假設(shè):
吃了 = 買 + 吃
吃飽了 = 買 + 吃 + 很多
可以把很多屬性總結(jié)為幾個場景,在該場景下視圖應(yīng)該是什么樣子。。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。