一个月工作总结

更多介绍:https://github.com/renliwo/hrm-fe-best-practice/blob/master/README.md

一 编码风格

我们的目标是项目中人的代码看起来像是同一个人写的(代码风格一致)。 组员接手的时候,想法要和当时开发这个人的想法一致(代码的存放位置,组件划分策略等)

要做到上面两点其实非常困难。 我从以下几个方面,旨在减少目标和现实的差距。

1.  约定大于配置

组件怎么划分?(组件式开发)

异步怎么处理?(redux-promise?)

函数怎么抽离,怎么写利于维护重用以及测试?(从组件中抽离逻辑)

公共的方法有哪些?(大家要烂熟于心,这样才不会造轮子)

2. 配置也很重要

代码检查 配置

formatter 配置

外部依赖配置

二 调试的套路

doctor+ dragon定位问题,可以解决80%问题。

能不debug 就不要debug

如果解决不了。继续

请求-》 本机 =》 map 到本地文件 =》 debug

关键路径加 monitor 可以帮助分析。

 

三 减少样板代码

我举个例子, react-redux, 在正常情况下是有很多样板代码的。 但是通过redux-actions就会减少很多样板代码。 另外在组件的construtor中bind this 其实就是样板代码。 console 在某种意义上也是样板代码,应该尽量避免。

四 thinking before coding

如果写出容易测试的代码,其实是非常考验写代码人的能力的。聪明的程序员总能写出方便测试和维护的代码。对于如何写出容易测试的代码,不在本文讨论范畴,不过可以给几点建议,首先是面向接口的测试先行思想,其次是合理划分代码粒度,一个方法只做一件事。

举个例子:

我们要开发一个功能,这个功能是在前台提交评论自动检索本地数据库

,如果匹配敏感词则给用户提示,含有敏感词,不允许提交。

给你半分钟想怎么做。

1,2,3,4.。。。。。

假装过了半分钟。

如果你可以相出下面这种写法,你基本过关了。这种写法的好处最后再说。

// (string, array) -> array
function checkSensitiveWords(word, blackList) {
	
}
function getBlackList() {
	
}
function submit(reply) {
	
}
function alert(str) {
	
}
// array -> string
function concatBlackWords(words) {
	
}

 有了想法可以写代码了。(写代码就是打字,重要的打字之前的思考)

// (string, array) -> array
function checkSensitiveWords(word, blackList) {
	return blackList.filter(backWord => word.includes(backWord))
}
function getBlackList() {
	return JSON.parse(localStorage.getItem('blackList'));
}
function submit(reply) {
	return fetch('xxxxx')
	.then(Modal.success.bind(null, {
		title: 'xxxx',
		content: '',
	}))
	.catch(Modal.error.bind(null, {
		title: 'xxxx',
		content: '',
	}))
}
function alert(str) {
	alert(str);
}
// array -> string
function concatBlackWords(words) {
	return words.join(',').concat('是敏感词,不允许提交');
}

 

代码串起来就可以了。

// (string, array) -> array
function checkSensitiveWords(word, blackList) {
	return blackList.filter(backWord => word.includes(backWord))
}
function getBlackList() {
	return JSON.parse(localStorage.getItem('blackList'));
}
function submit(reply) {
	return fetch('xxxxx')
	.then(Modal.success.bind(null, {
		title: 'xxxx',
		content: '',
	}))
	.catch(Modal.error.bind(null, {
		title: 'xxxx',
		content: '',
	}))
}
function alert(str) {
// TODO:  replace with more powerfull instance later
	alert(str);
}
// array -> string
function concatBlackWords(words) {
	return words.join(',').concat('是敏感词,不允许提交');
}

// 奔跑吧代码
function reply(msg) {
        const sensitiveWords = R.pipe(getBlackList, checkSensitiveWords)(msg);
        if (sensitiveWords.length > 0) {
            return R.pipe(concatBlackWords, alert)(sensitiveWords)
        }
        return submit(msg)
}

 

TO BE CONTINUE

转载于:https://my.oschina.net/wanjubang/blog/1480214

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值