博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个月工作总结
阅读量:6690 次
发布时间:2019-06-25

本文共 2553 字,大约阅读时间需要 8 分钟。

hot3.png

更多介绍: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) -> arrayfunction checkSensitiveWords(word, blackList) {	}function getBlackList() {	}function submit(reply) {	}function alert(str) {	}// array -> stringfunction concatBlackWords(words) {	}

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

// (string, array) -> arrayfunction 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 -> stringfunction concatBlackWords(words) {	return words.join(',').concat('是敏感词,不允许提交');}

 

代码串起来就可以了。

// (string, array) -> arrayfunction 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 -> stringfunction 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

你可能感兴趣的文章
POJ题目(转)
查看>>
maven 依赖范围
查看>>
HDU - 1520 Anniversary party [树形dp]
查看>>
nginx搭建多个站点
查看>>
字符串运算符
查看>>
linux大全
查看>>
jq 鼠标旋转控制也能3d旋转
查看>>
Spring+Mybatis多数据库的配置
查看>>
线性表----单链表
查看>>
mysql 启动报错
查看>>
Git 与 GitHub
查看>>
Spring Cloud:多环境配置、eureka 安全认证、容器宿主机IP注册
查看>>
【leetcode】667. Beautiful Arrangement II
查看>>
【leetcode】955. Delete Columns to Make Sorted II
查看>>
JDK源码阅读-Integer
查看>>
Java修行之路
查看>>
接口(工厂模式&代理模式)
查看>>
3月个人随笔
查看>>
netty入门
查看>>
iOS 组件化流程详解(git创建流程)
查看>>