热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我的方法(函数)设计小心得

在工作中经常被问道:如果你的那个方法输入空会返回什么?我记得自己曾经使劲回忆也没想到自己那个方法是怎么个回事。也经常跟同事在对功能的时候在说代码,那个冒泡排序,两个循环就搞定了。。。。。渐渐就发现,很多时候,写代码是有规则去遵循的。然后自己结合自己工作中的一些小经验,就出了下文。

在工作中经常被问道:如果你的那个方法输入空会返回什么?我记得自己曾经使劲回忆也没想到自己那个方法是怎么个回事。也经常跟同事在对功能的时候在说代码,那个冒泡排序,两个循环就搞定了。。。。。渐渐就发现,很多时候,写代码是有规则去遵循的。然后自己结合自己工作中的一些小经验,就出了下文,也许很糟糕,也许很好,但是现在真的很适合我,如果你在写代码之前也很迷茫过,那么也许可以帮上你的大忙。

1. 当你开始写一个方法的时候,你一定要知道他要干什么

你要明白,这个方法的场景。

总结:一般我拿到是一个功能,我会问自己为这个功能的意义是什么?他给那些用户用,那些角色用?我的时间够吗? 我做到什么程度就OK了?我先做什么?那些功能是先出来的,那些可以后出来?

2. 找到已知条件与未知条件,你需要做的是梳理他们的关系?

我记得有一个方法,我用了一上午的时间在梳理表之间的关系,但是我只用了半个小时就把这个方法完整的做出来了。现在有的条件是什么,没的条件是什么?整个过程中那些是自己知道的,那些是自己不知道的?我必须知道什么才可以去写代码,我的风险点在哪里?大概的参数的流转是怎么流动的?我最后会把这些疑问全部消除掉,然后又一个很清晰的流程。

总结:这个过程我感觉是最主要的一个过程,我花时间最多的也是这里,基本上是问问问,有的时候只要查表结构就OK了,但是更多的时候由于文档的不完整性,基本是这样的,一个方法要问N个人,这时候就要发扬程序员的“不要脸”精神了。我基本上是拿张纸边写边梳理的,梳理完之后,基本上还会去找之前做过的人自己在讲述一遍,问问是不是这个逻辑(当然这只是比较不熟悉的模块了),简单的还有一种直接方式,自问自答,来验证自己写的方法是否正确,反正我一直有自问自答的习惯,因为没人给我确认了,只有自己给自己确认了,这个过程中能把自己思路梳理出来,我管这个叫说代码,而不是写代码。

3. 真的开始可以写了

如果你真的想好了,有自己的逻辑了,那么真的可以写代码了,就按照2说的写就好了,这是多么有意思的一个过程呀,把你说的用代码进行表述。但是我基本上开始写的时候写的是一把伪代码,把自己想到的写下来,接着会去填代码块,逻辑如果超级简单的就真不这么干了,太费时间了。

总结:边写边思考:我也见很多高手写代码,逻辑很清楚,基本是写方法名称刚开始定义的很扯的,比如就x(),他说他自己也不知道他要干什么,所以就这么写了,等我知道他要干什么我就在重命名了,这样不会耽误自己的思路函数名称的定义基本是google上查查查,如果写的过程中遇到自己不会的,直接会写一行汉字标注下,等写完之后,在看一遍,然后去找解决方法,而不是边写边查,这样会很糟糕,代码的产出太少。除非是一门新语言我必须边写边查。

4. 自己测试

什么单元测试什么的,自己基本是在项目里面,边写边测试了,有的时候会推到第二天,但是一定要测试的,自测很重要。

总结:自己写的方法,一定要测试才给别人去用,这是做开发的最基本的事情,尤其是接口。其实在第二部去设计了解需求的时候,就已经设计好要输入什么参数,只要搬过来用就好了,自己测试,也就无非验证自己写的是否正确。

5. 自己代码审查

注释的加进去,你自己的大名,创建的时间,实现什么功能,以前自己写代码,以前写代码基本是到4就OK了,但是我自从看到同事写的代码之后,发现人家的代码简直就是艺术呀,所以我也就在代码块加#region? #endregion 感觉很清爽。

6. 代码重构

读书的时候,听人家说,一个方法如果超出70行基本上就该拆几个方法了,所以最好在去重构下代码了。能拆的话在时间允许的情况下,最好去拆下,去优化下。

总结:代码重构很永恒的话题吧,关于代码重构的看自己的线下功夫了。?

小结

如果出现业务的bug,应该反复走2,3,4这个步骤了,只要按这个步骤走,基本上业务不会出问题了。关于代码测试,我不喜欢写一个方法就测试一个,我喜欢全部写出来,把大的框架搭出来,然后再去做些细节,原因是现在时间真的很紧急。但是一个功能做完之后,自己必须全部测一下,在接着去做别的。总之,在写方法之前,你首先的把业务了解清楚,把自己要写的东西能用自己语言描述清楚,然后再去写代码,我感觉这个方法很适合我。然后在写代码的时候多问问自己一些问题比如:

你的那个方法,如果我输入空,会出现什么情况?你的那个方法能写在服务器端吗?(为什么问这个问题呢?因为我发现很多方法写在服务器端的方法,会节省你很多时间)你这个方法能提炼出来,放到公共模块里面吗?等等,我现在感觉这种方法很适合我,并且可以让我的工作效率提高很多。

本文地址:http://www.nowamagic.net/librarys/veda/detail/1951,欢迎访问原出处。


推荐阅读
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 程序员妻子吐槽:丈夫北漂8年终薪3万,存款情况令人意外
    一位程序员的妻子在网上分享了她丈夫在北京工作八年的经历,月薪仅3万元,存款情况却出乎意料。本文探讨了高学历人才在大城市的职场现状及生活压力。 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 本文介绍了如何在 DB2 环境中创建和删除数据库编目。创建编目是连接新数据库的必要步骤,涉及获取数据库连接信息、使用命令行工具进行配置,并验证连接的有效性。删除编目则用于移除不再需要的数据库连接。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 探讨如何通过编程技术实现100个并发连接,解决线程创建顺序问题,并提供高效的并发测试方案。 ... [详细]
  • 本周信息安全小组主要进行了CTF竞赛相关技能的学习,包括HTML和CSS的基础知识、逆向工程的初步探索以及整数溢出漏洞的学习。此外,还掌握了Linux命令行操作及互联网工作原理的基本概念。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
author-avatar
芳方程_269
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有