一个函数有多少行代码比较合适?

2023-10-27

要看功能,如果一个方法可以分成好多个子功能的话
尽量将其抽取出来作为单独的方法,
曾经重构过好多这样的代码,
不是写代码的人水平低,
主要还是不负责,懒得多想。
个人觉得函数的写法应该遵循以下两点基本的原则:
1.当发现函数中有重复代码的时候,说明你可以将它封装成一个新的函数了
2.每个函数按照功能命名,即每个函数的实现都应该仅包含函数名所传达的内容。
根据单一职责设计原则 分得越精细越好,而且要看功能,如果一个方法可以分成好多个子功能的话尽量将其抽取出来作为单独的方法,曾经重构过好多这样的代码,不是写代码的人水平低,主要还是不负责,懒得多想。
尽量不超过一屏应该是公认的,因为当你要上下滚动屏幕时会大幅增加你出错的概率。
不过我觉得更多的还是要关注这个函数是否有再被分解的意义,如果代码不需要重用,在功能上也没有显得很独立,那就不必要强行要求分解成更小的函数吧。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个函数有多少行代码比较合适? 的相关文章

  • 《重构 - 改善既有代码的设计》总结

    1 重构 第一个示例 重构前 先检查自己是否有一套可靠的测试集 这些测试必须有自我验证能力 TDD 重构技术就是以微小的步伐修改程序 如果犯下错误 很容易便可发现它 傻瓜都能写出计算机可以理解的代码 唯有能写出人类容易理解的代码的 才是优秀
  • 关于mysql_connect()函数不能连接mysql的解决

    之前我已经搭建好了LAMP Linux Apache MySql PHP 可以参照我之前的相关博客搭建 今天想试一下在php连接mysql 但是却没有成功 使用的代码如下
  • 重复代码(克隆代码)的几个概念与类型

    本文内容来源于以下两篇参考文献 1 Chanchal K Roy James R Cordy Rainer Koschke Comparison and Evaluation of Code Clone Detection Techniqu
  • CSAPP第三版运行时打桩Segmentation fault

    CSAPP第三版7 13 3节提到了运行时打桩机制 它可以在运行时将程序中对共享库函数的调用进行截获 替换为执行自己的代码 这个机制基于动态链接器的LD PRELOAD环境变量 如果LD PRELOAD环境变量被设置为一个共享路径名的列表
  • python装饰器简介---这一篇也许就够了

    Python装饰器 decorator 是在程序开发中经常使用到的功能 合理使用装饰器 能让我们的程序如虎添翼 装饰器引入 初期及问题诞生 假如现在在一个公司 有A B C三个业务部门 还有S一个基础服务部门 目前呢 S部门提供了两个函数
  • 关键字static、Const、Volatile的作用是什么

    关键字static的作用是什么 在C语言中 关键字static有三个明显的作用 1 在函数体 一个被声明为静态的变量在这一函数被调用结束后不释放其存储空间 定义为static的局部变量的存储在全局区 静态区 而一般的局部变量存储在栈中 2
  • 如何检查 Docker 镜像是否存在漏洞

    Docker 可以将应用程序及其依赖项打包到一个虚拟容器中 该容器可以在任何 Linux Windows 或 macOS 计算机上运行 这使应用程序可以在各种位置运行 例如本地 公共 请参阅分散计算 分布式计算和云计算 或私有云 在 Lin
  • 小程序中的ES6 Class

    movie detail js原始写法 var app getApp 引用 var util require utils utils js 引用数据请求的公共函数 Page 初始化数据 data movie es6方式 module cla
  • 大模型时代,企业如何重构 AI 应用落地范式?

    近一年来 生成式人工智能 AIGC 技术的快速发展和各种大模型的涌现 引发了全球范围内对于通用人工智能 AGI 时代是否即将到来的讨论 在 AIGC 大模型公共服务逐渐被大众辩证地接受后 如何用 AIGC 技术重塑企业智能服务成为一个深水区
  • ##顺序表 编码##

    ifndef LIST H define LIST H class List public List int size List 析构函数 void ClearList 清空线性表 bool ListEmpty 判断线性表是否为空 int
  • 实验6-6 使用函数验证哥德巴赫猜想 (20分)

    http pta patest cn pta test 13 exam 3 question 478 include
  • RxJava 事件流之聚合

    Aggregation 前面介绍了如何过滤掉不需要的数据 如何根据各种条件停止发射数据 如何检查数据是否符合某个条件 这些操作对数据流来说都是非常有意义的 本节介绍如何根据数据流中的数据来生成新的有意义的数据 本节的操作函数会使用源 Obs
  • CH07_封装

    封装记录 Encapsulate Record 162 曾用名 以数据类代替记录 Replace Record with Data Class organization name Acme Gooseberries country GB c
  • 回调函数&&回调机制

    所谓回调 定义是 一个方法的指针传递给事件源 当某一事件发生时用来调用这个方法 比如客户程序C调用服务程序S中的某个函数A 然后S又在某个时候反过来调用C中的某个函数B 对于C来说 这个B便叫做回调函数 例如Win32下的窗口过程函数就是一
  • unity中mathf.Lerp的运用

    在unity3d中经常用线性插值函数Lerp 来在两者之间插值 两者之间可以是两个材质之间 两个向量之间 两个浮点数之间 两个颜色之间 其函数原型如下 1 Material Lerp 插值 function Lerp start Mater
  • Shell函数和脚本参数

    1 在脚本中定义函数 functin name 直接的定义方式 语句块 function function name 使用关键字 function 定义的方式 语句块 函数命名规则 为了和变量区分 使用小写字母和下划线 以字母开头 不能使用
  • 领域驱动设计:DDD重构中台业务模型

    文章目录 如何避免重复造轮子 如何构建中台业务模型 如何避免重复造轮子 要避免重复建设 就要理解中台的理念和思想 中台是企业级能力复用平台 复用 用白话说就是重复使用 就是要避免重复造轮子的事情 中台的设计思想与 高内聚 低耦合 的设计原则
  • 最小二乘法–高斯牛顿迭代法

    最小二乘法 高斯牛顿迭代法 本文将详解最小二乘法的非线性拟合 高斯牛顿迭代法 1 原理 高斯 牛顿迭代法的基本思想是使用泰勒级数展开式去近似地代替非线性回归模型 然后通过多次迭代 多次修正回归系数 使回归系数不断逼近非线性回归模型的最佳回归
  • Golang在ARM/Linux平台上函数参数的传递

    一 前言 作为一名初级的嵌入式软件开发从业者 工作中大部分项目以C语言实现 使用C语言来编写代码 通常我们可以预测到编译生成的汇编 机器编码的大致情况 在不同的芯片架构上 有其相应的ABI标准 而近年来逐渐流行起来的Go语言编程 虽然同样语
  • js制作简单的轮播图

    实现原理 首先定义一个div 设置width和height 然后在这个div里面再定义一个div2 该div的宽度为父div的宽度的n倍 其中n表示图片的张数 在这个div2里面放置需要进行轮播的所有图片 设置每张图片的宽度为一个最外层父类

随机推荐

  • LateX环境安装与配置--包括常见安装失败错误更正(TeX Live 2021及TexStudio)

    目录 一 前言 二 下载镜像文件 1 打开网址 点击 On DVD 2 点击下载ISO镜像文件 3 选择一个最近的镜像网站进行下载 4 下载镜像文件 5 打开镜像文件 三 安装 1 修改安装内容及目录 2 出错问题 lt 1 gt 此电脑
  • pandas从mongo中导出数据存入excel或csv

    import pandas as pd import pymongo mongo不带密码连接 con pymongo MongoClient ip mongo带密码连接 con pymongo MongoClient mongodb for
  • SQL_les0/基础知识/联合注入常用语句与相关技巧

    SQL注入 一种针对数据库的攻击方式 危害 数据被破坏 数据被篡改 原理 攻击者通过构造不同的SQL语句来实现对数据库的操作 常见数据库 Oracle SQL Server DB2 PostgreSQL MySQL Access 使用SQL
  • 【图像去雾】Contrastive Learning for Compact Single Image Dehazing阅读

    论文 https arxiv org pdf 2104 09367 pdfhttps arxiv org pdf 2104 09367 pdf 代码 https github com GlassyWu AECR Nethttps githu
  • MongoDB修改数据库名,collection名库名

    修改数据库名 db copyDatabase test test1 db copyDatabase old name new name use test use old name db
  • Qt之读写文件

    1 思路 读写文件的基本操作 读文件 写文件 打开文件 打开文件 读取文件 写入文件 关闭文件 关闭文件 2 QFile实现读写文件 QFile类提供读写文件的接口 它的构造函数如下 QFile const QString name QFi
  • iOS架构师_观察者模式

    定义 观察者模式 有时又被称为模型 视图 View 模式 源 收听者 Listener 模式或从属者模式 一个目标物件管理所有相依于它的观察者物件 并且在它本身的状态改变时主动发出通知 这通常透过呼叫各观察者所提供的方法来实现 此种模式通常
  • 初学java笔记(含遇到的问题及解决方法)

    java浮点数保留n个小数位问题 法一 import java text DecimalFormat DecimalFormat res new DecimalFormat 0 000 System out println res form
  • 神经网络算法开发学习总结--算法应用及优化

    1 算法目标设定 首先要确定一个算法目标及约束条件 比如运行时间 硬件内存限制 准确度等选择算法 学习效果一般尽量采用单个指标进行评估 对于 N 个评价指标 选择其中一个指标作为优化指标 选择剩下的 N 1 个指标作为满足指标 比如针对分类
  • 【计算机网络】HTTP协议详解

    目录 1 HTTP协议概述 2 HTTP协议的工作过程 3 使用抓包工具观察HTTP协议格式 3 1 Fiddler抓包工具 3 2 HTTP协议格式 4 解析HTTP请求 4 1 URL 4 2 请求方法 4 2 1 GET方法 4 2
  • Python-Pygame实践:《杀死冠状病毒》

    2020年春节前后 冠状病毒爆发 遂编写这个游戏 希望武汉人民加油 中国人民加油 杀死病毒 获得胜利 游戏的内容参考的是Eric Matthes的 Python编程从入门到实践 中的项目1外星人入侵 稍作修改 以下是书中对该游戏的描述 在游
  • 【Review】用于SLAM的地点识别(Place Recognition)

    目录 1 Point Cloud Lidar 2021 ICRA ICCV IROS CVPR Others 2020 2019 ICCV 2018 IROS 2 Researchers 3 Visual 2021 IROS ICCV CV
  • linux Mysql 安装

    目录 前言 概念 应用环境 安装步骤 修改密码 按装脚本 MySQL 操作案例 创建数据库 数据表 MySQL 5 7远程登录 前言 本内容主要讲述在 linux 系统下怎么样安装 Mysql 以下讲述过程经过多方面整理而成 概念 MySQ
  • 2021-08-10 layui折叠面板的使用

    官方参考 element模块元素操作文档 Layui 面板 在线演示 Layui 实现效果 html 在折叠面板的父容器设置属性 lay accordion 来开启手风琴 那么在进行折叠操作时 始终只会展现当前的面板 div class l
  • 抓包微信下线的操作思路

    我来详细介绍一下实现微信下线操作的思路 1 首先 你需要清楚微信客户端和服务器之间的通信流程 微信客户端通过向服务器发送登录请求完成登录操作 而微信下线操作则需要模拟微信客户端向服务器发送下线请求 2 接下来 你需要使用网络抓包工具对微信客
  • 矩阵反演公式的推导证明

    已知 A A A为 n n n times n n n阶非奇异矩阵 D
  • caffe的Net类学习

    注意 这是临时的学习心得 乱得很 莫耽误各位时间 caffe的Net类 Net m文件 注释 classdef Net lt handle Wrapper class of caffe Net in matlab properties Ac
  • 基于SpringBoot框架的协同过滤算法的体育用品商城设计与实现

    系统合集跳转 一 系统环境 运行环境 最好是java jdk 1 8 我们在这个平台上运行的 其他版本理论上也可以 IDE环境 Eclipse Myeclipse IDEA或者Spring Tool Suite都可以 tomcat环境 To
  • 数据挖掘简答知识点总结

    绪论 为什么进行数据挖掘 1 已获得的大量数据往往是数据丰富但信息贫乏的 2 计算设备变得廉价且功能强大 3 没有强大的工具的话 数据量已经超过人类的理解能力 4 数据收集存储的速度越来越快 5 传统技术已经不适用于原始数据 6 数据挖掘有
  • 一个函数有多少行代码比较合适?

    要看功能 如果一个方法可以分成好多个子功能的话尽量将其抽取出来作为单独的方法 曾经重构过好多这样的代码 不是写代码的人水平低 主要还是不负责 懒得多想 个人觉得函数的写法应该遵循以下两点基本的原则 1 当发现函数中有重复代码的时候 说明你可