210 如何让业务逻辑写起来更好看

    xiaoxiao2021-12-14  17

    最近总感觉自己写的代码很丑,设计模式很难有用武之地,今天看了 https://www.zhihu.com/question/25339235/answer/90183763?group_id=692432194668343296想到,也许可以给自己定制一个业务逻辑最佳实践

    简化 if else

    业务逻辑可能看起来长这样 (转自上面的链接):

    switch (gender): case 'male': if (level === 'gold') { } else if (level === 'silver') { } else { } break; case 'female': if (level === 'gold') { } else if (level === 'silver') { } else { } break; case 'unknown': if (level === 'gold') { } else if (level === 'silver') { } else { } break;

    善用data driven的思想可以这样:

    GENDER = { MALE: 'male', FEMALE: 'female’, UNKNOWN: 'unknown' } LEVEL = { GOLD: 'gold', SILVER: 'silver', BRONZE: 'bronze' } avatars = { GENDER.MALE => { LEVEL.GOLD =>; LEVEL.SILVER =>; LEVEL.BRONZE=>; }, GENDER.FEMALE => { LEVEL.GOLD => LEVEL.SILVER => LEVEL.BRONZE => }, GENDER.UNKNOWN => { LEVEL.GOLD => LEVEL.SILVER => LEVEL.BRONZE => } } user.gender = (user.gender in GENDER) ? user.gender : GENDER.UNKNOWN user.level = (user.level in LEVEL) ? user.level : LEVEL.BRONZE user.avatar = avatars[user.gender][user.level];

    改进foreach

    items.filter(item => verify(item)) items.map(item => update(item)) items.each(item => process(item))

    系列操作可以用 decorator

    class { showLogo () { showAd() ... } showBanner () { showAd() ... } showSidebar () { showAd() ... } } class { @decorated by AdDecorator showLogo, showBanner, showSidebar ... }

    善用回调

    function attach() { app.A = db.update(app.states) log(..) } function move() { app.B = db.update(app.stats) log(..) } app.on('change', 'stats', stats => { db.update(stats) log(..) }) function attack() { app.update(A ..) } function move() { app.update(B ..) }

    有统一的函数命名规则

    我总觉得写代码的时候有五分之一的时间在思考函数和变量命名规则,尤其是rest接口,约定命名的时候简直要了我的命。 google style guide 里面没有提具体规则,只规定了函数必须是动词,变量命名要用驼峰法(lower camel)。

    转载请注明原文地址: https://ju.6miu.com/read-963247.html

    最新回复(0)