如何使JavaScript 代码库变干净
发表于:2024-11-29 作者:千家信息网编辑
千家信息网最后更新 2024年11月29日,这篇文章给大家介绍如何使JavaScript 代码库变干净,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、使用默认参数代替短路或条件默认参数通常比短路更干净。function
千家信息网最后更新 2024年11月29日如何使JavaScript 代码库变干净
这篇文章给大家介绍如何使JavaScript 代码库变干净,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
1、使用默认参数代替短路或条件
默认参数通常比短路更干净。
function SomeMethod(paramThatCanBeUndefined) {
const localValue = paramThatCanBeUndefined || "Default Value"; console.log(localValue) // ...}SomeMethod() // Default ValueSomeMethod("SomeValue") // SomeValue
尝试以下方法:
function SomeMethod( console.log(paramThatCanBeUndefined) // ...}SomeMethod() // Default ValueSomeMethod("SomeValue") // SomeValue
声明:Falsy值,如'',"",false,null,0,和NaN将不会被默认值替代:
function SomeMethod(paramThatCanBeUndefined = "Default Value") { console.log(paramThatCanBeUndefined) // ...}SomeMethod(null) // will not Default Value, will null InsteadSomeMethod("SomeValue") // SomeValue
2、处理多个条件
const conditions = ["Condition 2","Condition String2"];someFunction(str){ if(str.includes("someValue1") || str.includes("someValue2")){ return true }else{ return false }}
一种更干净的方法是:
someFunction(str){ const conditions = ["someValue1","someValue2"]; return conditions.some(condition=>str.includes(condition));}
3、用动态键值对替换开关(即对象文字)
开关版本(或将开关替换为if / else):
const UserRole = { ADMIN: "Admin", GENERAL_USER: "GeneralUser", SUPER_ADMIN: "SuperAdmin",};function getRoute(userRole = "default role"){ switch(userRole){ case UserRole.ADMIN: return "/admin" case UserRole.GENERAL_USER: return "/GENERAL_USER" case UserRole.SUPER_ADMIN: return "/superadmin" default: return "/" }}console.log(getRoute(UserRole.ADMIN)) // return "/admin"console.log(getRoute("Anything")) // return Default pathconsole.log(getRoute()) // return Default pathconsole.log(getRoute(null)) // return Default path// More cases if new arrive// You can think if else instead of switch
动态键值对版本:
const UserRole = { ADMIN: "Admin", GENERAL_USER: "GeneralUser", SUPER_ADMIN: "SuperAdmin",};function getRoute(userRole = "default role"){ const appRoute = { [UserRole.ADMIN]: "/admin", [UserRole.GENERAL_USER]: "/user", [UserRole.SUPER_ADMIN]: "/superadmin" }; return appRoute[userRole] || "Default path";}console.log(getRoute(UserRole.ADMIN)) // return "/admin"console.log(getRoute("Anything")) // return Default pathconsole.log(getRoute()) // return Default pathconsole.log(getRoute(null)) // return Default path// No more switch/if-else here.// Easy to Further expansion
4、避免过多的函数参数
function myFunction(employeeName,jobTitle,yrExp,majorExp){ return `${employeeName} is working as ${jobTitle} with ${yrExp} years of experience in ${majorExp}`}//output be like John is working as Project Manager with 12 year of experience in Project Management// you can call it viaconsole.log(myFunction("John","Project Manager",12,"Project Management"))// ***** PROBLEMS ARE *****// Violation of 'clean code' principle// Parameter sequencing is important// Unused Params warning if not used// Testing need to consider a lot of edge cases.
这是一种更清洁的方法:
function myFunction({employeeName,jobTitle,yrExp,majorExp}){ return `${employeeName} is working as ${jobTitle} with ${yrExp} years of experience in ${majorExp}`}//output be like John is working as Project Manager with 12 year of experience in Project Management// you can call it viaconst mockTechPeople = { employeeName:"John", jobTitle:"Project Manager", yrExp:12, majorExp:"Project Management"}console.log(myFunction(mockTechPeople))// ES2015/ES6 destructuring syntax is in action// map your desired value to variable you need.
5、使用Object.assign设置默认对象
这看起来很繁琐:
const someObject = { title: null, subTitle: "Subtitle", buttonColor: null, disabled: true};function createOption(someObject) { someObject.title = someObject.title || "Default Title"; someObject.subTitle = someObject.subTitle || "Default Subtitle"; someObject.buttonColor = someObject.buttonColor || "blue"; someObject.disabled = someObject.disabled !== undefined ? someObject.disabled : true; return someObject}console.log(createOption(someObject));// Output be like // {title: 'Default Title', subTitle: 'Subtitle', buttonColor: 'blue', disabled: true}
这种方法看起来更好:
const someObject = { title: null, subTitle: "Subtitle", buttonColor: null, disabled: true }; function creteOption(someObject) { const newObject = Object.assign({ title: "Default Title", subTitle: "Default Subtitle", buttonColor: "blue", disabled: true },someObject) return newObject } console.log(creteOption(someObject));
关于如何使JavaScript 代码库变干净就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
干净
方法
参数
代码
内容
动态
对象
更多
条件
版本
帮助
不错
繁琐
兴趣
函数
多个
小伙
小伙伴
文字
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库原理与应用 下载
windows10网络服务器
手机修改app的服务器端口
永新天气预报软件开发
数据库导出表结构excel
会员管理的软件开发
徐州企业软件开发常见问题
英国与欧盟网络安全协议
工业网络安全事件的防御手段
软件开发视频广告模板
第七章网络安全法
数据库relax
软件开发包括软件工程
数字签名服务器原理
网络安全教学设计四年级
陕西大专软件开发排名
武汉大学 网络安全
布兰契所有服务器刷新时间一样么
国企软件开发要求
软件开发工资为什么都高
网络安全十强厂商
服务器内存条可以和普条一起用吗
广州贵仁网络技术有限公司
云免流服务器
阿里的数据库总量
网络安全监督积极分子总结
简述网络和网络安全含义
特警网络安全管理
打开服务器管理工具的命令
武汉大学 网络安全