热门标签 | 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,欢迎访问原出处。


推荐阅读
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • Maven快照版本管理及更新策略详解
    本文深入探讨了Maven中的快照版本管理和更新策略,解释了快照版本与正式版本的区别,并提供了如何配置快照更新策略的方法,以确保项目依赖始终保持最新。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 本文详细探讨了如何根据不同的应用场景选择合适的PHP版本,包括多版本切换技巧、稳定性分析及针对WordPress等特定平台的版本建议。 ... [详细]
  • 笔记说明重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系& ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 本文介绍了如何使用Node.js通过两种不同的方法连接MongoDB数据库,包括使用MongoClient对象和连接字符串的方法。每种方法都有其特点和适用场景,适合不同需求的开发者。 ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • Vue CLI 基础入门指南
    本文详细介绍了 Vue CLI 的基础使用方法,包括环境搭建、项目创建、常见配置及路由管理等内容,适合初学者快速掌握 Vue 开发环境。 ... [详细]
  • 本文探讨了如何在 Spring MVC 框架下,通过自定义注解和拦截器机制来实现细粒度的权限管理功能。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 深入探讨前端代码优化策略
    本文深入讨论了前端开发中代码优化的关键技术,包括JavaScript、HTML和CSS的优化方法,旨在提升网页加载速度和用户体验。 ... [详细]
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社区 版权所有