当前位置: 首页 > news >正文

《码农经验手册》-新手和老司机

有一种说法是,开发经验与代码量遵循抛物线模型。从写少量代码开始,并以此结束。
新手: 以简单的代码逻辑开始,因为没有太多选择,先做出来再说。他们跟着教程和示例代码来完成程序,花的时间也是少量的。
中级: 代码量通常是最多的。因为要实现他们脑海里的“完美”设计,因为需要创建并管理更多的抽象。因为他们在项目的投入时间也是最多的。
高级:在设计时期,已经考虑到了项目上线后代码维护的工作量,完美设计有多少次得到了赞赏,并开始计算“完美”的艺术作品被抛弃的频率和没能按期交付的次数,他们的目标是在快速变化的语言和框架中选择最适合当前项目的技术栈来写最少的代码达到最少的维护成本与最短的交付时间。

新手:代码格式严重不一致。虽然这不影响功能,但代码除了给机器来运行,也是给人读的。有些新手非常热衷于新技术的学习,可惜没有意识到代码格式的重要性。代码重复,因为没有完全掌握组建化的思想。有些会把所有逻辑放在一个类里面,因为还没有掌握抽象。尽管用了比较新的框架,有时候你会发现controller里面会有几个方法柔和着不同抽象层次的逻辑。往往写出来的程序会因输入的变化而抛错。接手代码的人往往因很难维护不得不重写一些模块。有时会发现hardcode了一些配置。

中级:代码过于抽象。他们希望每个小逻辑都可以被重用,即使只用1-2次。有时候你会发现一个项目里访问者模式满天飞。调试他们的代码,找一个bug需要经过20-30个类。除此之外,过于抽象的代码对可读性也有有负面的影响。除此之外,导致项目开发周期过长。在团队里,他们完成任何任务都在追求“完美”。代码约束,抽象,最新的框架等等。开发进度缓慢。

老司机: 代码一致,代码是自注释的。逻辑简单。创建容易维护的抽象,因为过多的复杂度是没必要的。会写好每个类和接口的注释,并维护这些注释,只在必要时,对一些方法和代码行进行注释说明。不重复造轮子,不写没必要的代码。因为写了意味着测试,维护,改bug,重构,重写。

相关文章:

  • Azure 聊天机器人-1 环境搭建
  • Azure 聊天机器人2
  • 通过Socket configuration controls 获取网络设备地址
  • vim amp; emacs color Scheme
  • Azure 聊天机器人3-集成luis(语言识别)服务
  • Azure聊天机器人4-实现luis dialog
  • Oprofile工具的使用
  • C# 自然语言处理1-识别文字到语音
  • 在wxPython中使用OpenGL
  • C#自然语言处理2-识别语音并执行进程
  • Winforms:只读TextBox的文字颜色不随ForeColor的改变而改变
  • c# OpenCV -1 直接比对两张图片
  • 快速LightMap烘焙
  • c# OpenCv 2-使用haarcascade模型进行人脸识别
  • irrlicht引擎源码剖析3 - 引用计数
  • Google 是如何开发 Web 框架的
  • 0x05 Python数据分析,Anaconda八斩刀
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Angular 响应式表单之下拉框
  • CODING 缺陷管理功能正式开始公测
  • Effective Java 笔记(一)
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • ES6系列(二)变量的解构赋值
  • express + mock 让前后台并行开发
  • github从入门到放弃(1)
  • Java|序列化异常StreamCorruptedException的解决方法
  • Javascript 原型链
  • java概述
  • Java小白进阶笔记(3)-初级面向对象
  • Laravel5.4 Queues队列学习
  • nginx 配置多 域名 + 多 https
  • 从伪并行的 Python 多线程说起
  • 前端代码风格自动化系列(二)之Commitlint
  • 如何用vue打造一个移动端音乐播放器
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 通过几道题目学习二叉搜索树
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • AI算硅基生命吗,为什么?
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • ​Spring Boot 分片上传文件
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #100天计划# 2013年9月29日
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (52)只出现一次的数字III
  • (pojstep1.3.1)1017(构造法模拟)
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (简单) HDU 2612 Find a way,BFS。
  • (四)JPA - JQPL 实现增删改查
  • (五)网络优化与超参数选择--九五小庞
  • (一)appium-desktop定位元素原理