如何写好代码?

2023-11-12

想要的都拥有,失去的都释怀,2020鼠于你

1,写代码容易吗

代码容易写,也不容易写。但做人不能一直太中立,那我选择好代码不容易写吧。
比如会写字,不一定能写出诗歌词赋。但你说写字难吗,对于牙牙学语时难的,对于现在的你,不难,只不过可能是自成一派,没那么好看。代码要能随着业务成长,方便做出拆分合并更新等,好的代码就要保证正确性前提下有更好的维护性。

2、设计模式

说到好代码一般都会涉及设计模式,有些经验的程序员已经不谈设计模式了,因为慢慢都习以为常了,他们开始向架构看去。

模式就是发现一种可识别的规律,比如色彩模式、简历模版也算。模式往往和抽象思维有关,分析事物共性,抽取事物共同的部分来帮助人们认识规律。设计模式就是对事物的重新定位整合来解决问题的一种模版一种套路。它是成熟的解决方案,解决类似的问题。
《设计模式:可复用面向对象软件的基础》一书中描述了23种设计模式。分为三类,创建型结构型行为型,其实都是对对象生命周期的再拆分,把创建过程独立出来,结构组合成功能,行为表达对象之间的交流,比如常用了观察者模式。当然设计模式也不是银弹,拆分会让架构变得复杂,但灵活性提高了,主要应对需求的变化。需求总会变,拆分让关注点分离,也慢慢架构产生了设计模式。

3,软件生命周期

软件生命周期中两个重要的子周期就是开发和运行生命周期。前者为后者服务,结合运行生命周期来决定代码如何组织编写。软件是对现实业务的模拟,虚拟化。运行生命周期就是对业务生命周期的模拟,当然外加上用户访问生命周期。所以如果一个甲方单位的业务组织越清晰,职责越明了,项目相对越容易做。

首先业务模型必须放在后台,用户不去接触的地方,好比你去饭店点餐,菜品的制作流程你是不知晓的,去银行存钱,你也不用关心钱交给柜员后去哪了,你只需关心你账上余额。银行柜员就是对外服务的窗口,用户访问的地方,银行为了效率可能会按业务划分不同的柜台,存钱的一个,办信用卡的一个,其他的一个这样,以满足不同的用户访问。然后业务模型的后面是仓储用于存放状态和数据,其实这就是典型的三层架构,想象一下银行柜台是各种服务接口,柜台玻璃的后边是各种的业务逻辑,再后面的防盗门后面就是金库档案。

用户服务接口一方面要组合业务模型,一方面还要持久化数据,任务太多,代码容易失控,开发人员容易996。这时可以针对用户访问生命周期再做拆分,比如分为业务获取、业务访问、业务保存等,也能提高开发的并行度。

4,技术业务架构

百科上已经总结的不错了。技术就是通过人为的创造条件,让指定的规律按照人类的意愿发生。火的发现本是自然打雷闪电产生,当时人类只能靠不停地添加木材来保持火不熄灭。后来发现了钻木取火,钻木就是技术,取火就是业务了。所谓业务,就是要解决人类的问题,目的是为了支撑人类自身的生命周期,使人类获得利益。
在这里插入图片描述
技术出现后也就会形成相应的工具。用双手快速转动木棍取火是需要很大的力气和速度的,体质差的人压根生不起来火。就有人采用弓弦来提高转动速度,所以在发现钻木效率不高时,人类对转动生命周期进行拆分,改进转动方式,一只手负责往下压,一只手负责转动,两手的分工产生了架构,拆分形成架构。和企业组织架构一样,企业初期可能只有CEO大小事物全权负责,后面生长为有CTO,运营,人力,研发等组织结构。
在这里插入图片描述

5,轮子

首先如果你的软件系统没有分层,那也就没有所谓的轮子,开源世界gayhub对你是没有什么意义的。只有在拆分过程中,才能去匹配是否有恰当的工具轮子,如果拆分到某一层级发现还是没有轮子,就要考虑要不要造轮子了,如果有轮子的功能大于当前拆分的,就看维护这个轮子值不值当了。想敲钉子没有找到锤子时,但发现了高跟鞋,勉强也能敲一敲,但高跟鞋比锤子又昂贵又易耗。如果刚好有恰当的轮子,那可以开开心心安装到自己的系统中,运行过程中发现轮子有些缺陷,着手维护它,就像汽车轮子,你发现每次制动时总会滑行很远,容易撞到,你就可以给它加上一个卡钳制动系统。拆分出来的问题和技术相匹配时,就是最完美的。比如有日志服务,权限管理等。

6,开源

上面提到的轮子,有开源的,当然也有闭源的。有些用已有的或自创轮子结合业务痛点打造新的氪金轮子来走商业模式,这种科研比较多,因为科研人员既是业务人员也是研发人员。那另一部分人为啥愿意把代码开源出来呢。

首先代码并不是软件生命周期的核心,运行生命周期和用户访问生命周期才是。没有公司把运营体系开源出来,这部分才是核心。开源代码就像写书,你看了也不一定能和作者思想一致,只是代码运行在机器中,书籍运行在脑子里。生而为人,千奇百怪,我们读书是为了能想到作者是如何思考的。源代码理解作者的设计思想,从理解作者面对的问题入手,让代码运行在脑子里。技术也是需要环境配套和人的配套。另一方面,开源作者也希望让全球开发者参与到自己项目的开发中,这样整个项目的研发体系就变得更大了,集思广益。

7,真相

其实也并没有说明如何写好代码?如何练一手好字,当然不是程序员喜爱的Consola和微软雅黑,程序员手写字也都自成一派。我们小时候练字会先去临摹,掌握每个字的笔锋走势。如何写一篇好文章,各种修辞手法套路,也就是设计模式,它可能没有白话文那么好懂,但很优美,也可以在合适的地方用其他手法代替。当然白话文也是一种风格。

平常积极心,现在获取知识极其容易,也极其容易焦虑。尽量先把自己的一亩三分地种好,再去刨别人家的地。贩卖焦虑和焦虑的也可能是同一个人。焦虑会是向上的动力,但如果只是贩卖给你的,那往往这种动力不会持久,一旦没有焦虑的供给,你就会焦虑“我现在该焦虑点啥啊”。滋生自己向上而生的力量,那种也许不是很强大,但会一股一股涌出的小涟漪,才是平常积极心态在水面上的挣扎,倘若那股力量比较强大,必定也有死磕的决心,何不放手一搏,翻江倒海。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何写好代码? 的相关文章

  • 空调工作原理

    1 变频空调 工作原理 变频 采用了比较先进的技术 启动时电压较小 可在低电压和低温度条件下启动 这对于某些地区由于电压不稳定或冬天室内温度较低而空调难以启动的情况 有一定的改善作用 由于实现了压缩机的无级变速 它也可以适应更大面积的制冷制
  • IT自由职业者的成功秘诀

    原文作者Greg Jorgensen是一位典型的程序员 他从1974年开始编程 曾在耐克和苹果等公司任职 他专攻修复和完善受损 被遗弃和 半生不熟 的Web应用程序 尤其是后台语言是PHP的网站 我从事自由职业已有十余年了 有时候在我有全职
  • 数据在OSI七层模型中的名字 数据帧、数据包、数据报以及数据段

    数据帧 数据包 数据报以及数据段 OSI参考模型的各层传输的数据和控制信息具有多种格式 常用的信息格式包括帧 数据包 数据报 段 消息 元素和数据单元 信息交换发生在对等OSI层之间 在源端机中每一层把控制信息附加到数据中 而目的机器的每一
  • fgets函数的理解

    fget函数的原型如下 char fgets char buf int n FILE fp 功能 从文件流读取一行 送到缓冲区 使用时注意以下几点 1 当遇到换行符或者缓冲区已满 fgets就会停止 返回读到的数据 值得注意的是不能用fge
  • 概说概要设计怎么做

    概说概要设计怎么做 51CMM COM原创 作者 厦门巨龙软件工程有限公司 卢琳生 2003 12 22 摘要 本文是在概要设计实践和学习中的一些心得与学习笔记 希望与大家分享 如有不妥之处欢迎指正 关键字 概要设计 结构化 OOD 正文
  • 简单的开集电极保护电路

    开集电极方式输出经常用于需要向外强力驱动输出数字或者脉冲缓冲信号的情况 在严酷的工作环境下比如汽车系统 这些信号需要被保护用来抵抗那些加在输入信号上可以立即损坏三极管的不可预知的短路信号 通常在开集电极的输出端嵌入一系列电阻的方法也有它的缺
  • 程序员,不止干到35岁

    程序员 不止干到35岁 在中国 程序员不能超过35岁 似乎已经是不争的事实 软件开发工作就是青春饭 顶多靠毕业这十年的时间 超过这个年龄 要不成功跃身成为管理者 要不转行进入其他领域 好像再没有更好的选择 即使偶有继续坚持作开发的 也被看成
  • 十万行代码!!!

    前些天 看到网上雷军写的一篇好象是叫给程序员的几个建议 说到程序员必须要写够十万行代码才能成为高手 不要心存侥幸 于是我回来计算了一下我的程序 不算不知道 一算吓一跳 居然有超过9万行的代码 如果不算表单属性等 也有45000多行纯代码 这
  • 项目架构图

    前言 前段时间一直在找工作 面试过程终于到了不少问题 有些是自己会的 有些是自己看过却无法整理出来的 说到底是理解不够透彻 记忆不够深刻 当然还有些是完全懵逼的 下面就来说下经常被问及 自己却无法当场整理出来的一个问题 那就是让你画出自己做
  • 数据库中视图、索引、存储过程的作用

    视图可以被看成是虚拟表或存储查询 可通过视图访问的数据不作为独特的对象存储在数据库内 数据库内存储的是 SELECT 语句 SELECT 语句的结果集构成视图所返回的虚拟表 用户可以用引用表时所使用的方法 在 Transact SQL 语句
  • 项目开发中开发文档出现的问题及其对策

    在常规项目开发管理中 很多项目专家都提出要用各种各样规范的文档对开发工作进行管理 但是在日常工作中 由于这些文档的编写的管理工作都是相当繁重的 以致让一线员工不能主动积极使用 更新这些文档 长期下来 这些管理型的 设计型的文档所发挥的作用就
  • 推荐几个容易中的计算机EI源刊(基本百发百中)

    转自小木虫 作者 pcmagic 收录 2012 05 27 发布 2012 05 20 根据多年的经验 以下计算机EI源刊可以说是百发百中 只要有工作量 并不需要什么创新性均可录用 Journal of Computers JCP ISS
  • 一个程序员的现状

    前一阵子读了 Java夜未眠 有一个系列是说台湾程序员的的生活现状的 看后还真是有够感慨的 于是就想把自己的现状整理一下 再结合自己的工作经历 看看是否能反映出我们这一批程序员的普遍的生存状态 一 从专业说起 论程序员的出身专业 那无非就两
  • 写需求分析必须牢记的5大要点

    需求验证的5大要点 要做好需求验证 必须在思想 方法 语言 人员 内容5个要点上做好相应的工作 否则就会产生很多负面的影响 1 思想 前面已经说过 由于Review被翻译成 评审 导致很多人将其与中国人常说的评审相混淆 其实它们之间是有区别
  • 无线路由、AP、网桥之区别详解篇

    通过无线上网冲浪 现在已经不是新鲜的事情 随着近一两年无线 网络的飞速发展 从企业到家庭都开始在不同的领域体验着 自由上网 的乐趣 笔者接触无线网络也有一段时间了 经常在一些无线论坛逛游 无论是在现实生活还是在论坛中 总会有朋友不断的问这样
  • 立体电影

    立体电影 百科名片 1953年5月24日立体电影首次出现 为了把观众从电视夺回来 好莱坞推出了一种新玩艺儿 立体电影 戴着特殊眼镜的观众像在观看 布瓦那魔鬼 及 蜡屋 这类惊险片那样 发现自己躲在逃跑的火车及魔鬼的后面 从而为我们带入了立体
  • code style

    最近一直在看java convention和google c style 因为老板要提高代码质量 我们小公司一个 因为客户说我们的代码质量太烂了 于是开始搞代码质量 先从静态 代码质量开始 于是就研究起来code style 但是 我发现
  • 何谓离散制造

    离散制造 Intermittent Discrete Manufacturing 产品的生产过程通常被分解成很多加工任务来完成 每项任务仅要求企业的一小部分能力和资源 企业一般将功能类似的设备按照空间和行政管理建成一些生产组织 部门 工段或
  • 力软-获取jfGrid值,并改变值

    问题 页面中jfGrid为动态加载出来的 在js中动态改变cell值之后 需要将jfGrid的值重新赋值一遍 解决 var rowindex 0 jfgrid layout 0 jfGridGet rowdatas rowindex F R
  • 前端基础Vue项目中的插槽使用

    概念 简单理解就是组件内部留一个或多个的插槽位置 可供组件传对应的模板代码进去 插槽的出现 让组件变的更加灵活 1 匿名插槽 父组件

随机推荐