你在编程过程中养成了哪些好习惯?

news2025/1/6 18:31:01

写工作日志。

我一直有大量写笔记的习惯。编程的时候,也经常遇到一些麻烦的问题,思路转瞬即逝,于是把所有这些思路记录下来,会在以后的搜索中成为重要的灵感来源。

我的工作日志里通常以项目为单位,包含四个重要的章节:

  1. 简介
  2. 设计
  3. 项目
  4. 日志

简介

记录一个项目的概要性信息,举几个例子:

  1. 项目的负责人是谁?关联方都有哪些人?以便我遇到问题时可以迅速找到对应的人,尤其是大厂经常有跨部门合作,不认识的关联方很多,不记录一下是很难的
  2. 服务器连接信息,比如测试服务器的地址,访问URL,数据库,MQ,各种常见的调试用入口都是值得记录一下的
  3. 技术文档入口,比如公司的wiki里跟项目相关的wiki的URL

设计

用来记录各种设计思路。包括把项目的各个部分进行拆解后的大模块,模块之间的接口,架构设计等等。

多个小节里记录各个部分的设计思路。尤其是经常有多种设计,可以再分一级目录来记录。每种设计都会有自己的特点,还可以开个表格做对比。比如某个方案的实现速度快,另一个方案可以利用成熟的设施,还一个方案的风险很小,一个方案很炫酷适合以后做分享等等。

这些设计的细节,使得以后寻求代码以外的思路时可以迅速的找到当初的思路。毕竟,很多技术细节,并不是仅仅依靠代码就能看懂的。

项目

项目进度管理用的,我会做个树形图,把每个工作都分拆的足够细致。并用颜色记录每个工作的完成程度。白色标识未开始,黄色是进行中,绿色完成,红色失败。有些带有一定技术风险的项目,同一个功能模块可能有几个技术方案备选,其中一些方案失败也是常态。

尤其是我用SVG图来整理整个树形图,每个节点都是可点击,通过HTML铆点到页面内工作项的具体卡片,来看这个工作项的具体描述。比如更详细的设计思路,实现过程,调研结论等等。

用树形图的方法,也就是项目管理领域常见的WBS方法。

经常是一个项目部署后还会有各个阶段的开发目标。比如功能修改。那么就可以每次子项目开一个小节,记录一下此次的需求方,需求内容等等。这样到年底要整理一年做过的事情时,就会非常有条理。

日志

记录每一天的工作内容。每天一个小节,以日期为标题。

有时候做实验较多,就会在一天中开多个卡片,每个卡片对应一次实验的过程。前面是控制变量,中间是实验结果,后面是对实验结果的简单分析,以便下次实验改进。

格式与搜索

熟悉我的朋友知道,我的笔记格式是reStructuredText,编译工具是一个只有2MB的docutils。生成HTML页面,而源码通过git管理。这样整个笔记库都可以通过grep来进行高效率的搜索。这可比那些源文件是专有格式的方便太多了。

一个例子

以一个基于WiFi的室内定位项目为例子。

目录结构就是如上所说的:

img

设计一章也包含了对WiFi定位原理的记录。

img

项目管理部分是树形图,记录项目分解和进度。

img

具体工作项卡片:

img

工作日志则是可以随意记录,不求规整,但求以后提供一点低价值线索:

img

软件工程

进入软件工程师的工作后,这些不是编程,却对编程有着重要意义的技能也是很多的。如上的工作日志技巧大半是我慢慢摸索出来的,少数是学PMP时学到的。

学习的过程就是把前人的经验为自己所用,而非自己再趟一遍所有的坑,所以我的学习过程中也会按一定计划来学习这些知识。《编程卓越之道3:软件工程化》这本书里就讨论了很多软件工程方面的技术,使得驾驭更大的项目时,也有更多成熟工具可供选择。有兴趣的朋友去看看。

img编程卓越之道(卷3):软件工程化京东¥127.80去购买

尤其,这本书里还有我写的推荐语 😃

img

编程中的那些技巧

编程中也有很多技巧,与语言无关,但对提升整个项目的水平有着巨大的帮助。代码质量的重要性不言而喻,随时随地可用的软件才是好的软件。

而要做到随时随地可用,就要处理很多异常情况,比如用精巧的逻辑来防御。关于这些技巧,非常推荐一本书《代码大全2纪念版》。我也在读这本书,后续会分享一些阅读体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/20337.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Linux/初学者]Vim文本编译器的模式切换及其常用指令

前言 Linux 系统中所有的内容都以文件的形式进行存储,当在命令行下更改文件内容时,常会用到文本编辑器。 Vi编辑器是Unix及Linux系统下的标准编辑器,同时也是Linux中最基本的文本编辑器, Vim编译器则是Vi编译器的升级版本&…

ActionVLAD算法详解

文章地址:https://rohitgirdhar.github.io/ActionVLAD/ 代码地址:https://github.com/rohitgirdhar/ActionVLAD/ 该文章由CMU、Adobe、法国国立计算机及自动化研究院联合提出,被CVPR2017收录。 该文章的创新点在于将vlad使用到动作分类任务…

化工原理 --- 热量传递(补充)

一.管外作强制对流的对流传热系数 1.管外作强制流动一般分为两种形式 ---- 分别是直列流动和错列流动 上图是两种流动方式下的传热系数计算公式 二.管外作强制对流 --- 换热器管间流动 在管内的强制对流传热分为两种形式,分别是圆缺形挡板和圆盘形挡板 1.圆缺形挡板…

计算机毕业设计之java+ssm社会保险养老系统

项目介绍 自“金保工程”在全国实施以来,促进了劳动和社会保障工作处理方法全面完善,可以把社会保险注册、登记、申请、审核、收取、给付、核查、资金账户、社保管理以及劳动力市场相结合,实现劳动就业、择业、创业和社会保险管理品台的共享…

[附源码]Python计算机毕业设计白果园网上水果超市

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

免费查题系统

免费查题系统 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(点击跳转&a…

二分法:一看就会,一写就废

目录二分法原理使用条件使用情况二分查找位置二分查找答案两者区别二分查找经典题目二分答案经典模板经典例题二分法原理 我们假设一下,你的女朋友买了件衣服,告诉你衣服的价格在200~2000之间,让你猜这件衣服的价格,怎么猜才能猜的…

JS使用Vue自定义组件实现动态多层数据渲染+递归+踩坑

Hi I’m Shendi 在没有使用打包软件(WebPack,VueCli)的原生环境下使用vue自定义组件 文章目录组件名称规则全局组件和局部组件简单的递归Demo组件名称规则 首先说一下组件名称规则,注册的组件名称用了大写的话在使用时则将大写改为 -大写的小…

网络系统管理 - SDCserver虚拟机配置

SDCserver- 配置 1.SDCserver 系统基础环境配置 (1)请根据附件说明或提供的基础信息,配置服务器的主机名,IP 地址,创建要求的用户名及密码; 配置Windows 防火墙,仅

HackMyVm,Chapter 1: Venu 复现 01 - 24

本文为复现篇: Refer to bugninja’s Write Up. Host: venus.hackmyvm.eu Port: 5000 User: hacker Pass: havefun!Flags 01 readme.txt # EN Hello hax0r, Welcome to the HMVLab Chapter 1: Venus! This is a CTF for beginners where you can practice your …

第七章:单链表与双链表(数组模拟)

第七章:单链表与双链表(数组模拟)数组模拟与结构体模拟的区别一、数组模拟单链表:1、链表的逻辑结构:2、数组模拟链表的物理结构:3、接口函数实现:(1)实现前的准备&#…

[附源码]java毕业设计同城搬家平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【云原生】设备云之云服务器的配置与使用

文章目录一、配置云服务1、创建连接设备2、配置云服务参数3、调试云服务二、云服务的使用1、发布主题2、实时数据3、发布状态或信息4、发布的信息列表5、发布的主题列表6、订阅主题7、Topiclist8、Pause9、MDataPubCycle一、配置云服务 1、创建连接设备 在 FlexManager 的“远…

正则表达式(在API文档中搜索类Pattern,可以看到正则表达式的规则)

正则表达式(在API文档中搜索类Pattern,可以看到正则表达式的规则) String.matches(”正则表达式”) 该方法会判断String是否满足括号内的正则表达式,如果满足,则返回true 正则表达式的作用: 校验字符串是…

PHP韩语学习网站用wamp、phpstudy运行定制开发mysql数据库BS模式

一、源码特点 PHP韩语学习网站是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库系统主要采用B/S模式开发,开发环境为PHP APACHE,数据库为mysql5.0,使用php语言开发 php网页源码韩语学习网站…

[Spring Cloud] Open Feign---扩展

✨✨个人主页:沫洺的主页 📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专…

[附源码]java毕业设计汽车租赁管理系统-

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Prometheus系列(二)Grafana可视化部署

概念 Grafana 是一个监控仪表系统,它是由 Grafana Labs 公司开源的的一个系统监测工具,它可以大大帮助我们简化监控的复杂度,我们只需要提供需要监控的数据,它就可以帮助生成各种可视化仪表,同时它还有报警功能&#…

【数据结构】线性表 _顺序表 链表的增删查改 _[细节分析+代码实现]

快速导航 1.线性表 2.顺序表 2.1 概念及结构 2.2 静态结构和动态结构的比较 2.3 接口实现(重点) 2.3.1 SeqList(初始化) &SeqListPrint(依次打印表中数据) 2.3.2 SeqListPushBack(尾插) 2.3.3 SeqListPushFront(头插) 2.3.4 SeqListPopBack(尾删) & SeqListPopFront(头…

C语言小游戏之扫雷(万字详解)

hello,大家好,今天我们继续为大家带来一个小游戏,扫雷。相信这个游戏又是很多人的童年,那么我们今天就来实现一下这个扫雷游戏。 目录 一、游戏简介 二、游戏的基本设计 1.游戏基本思路 2.游戏基本框架 3.如何设计布置雷与排查…