模板,新手读代码砸电脑的诱因

2024-05-10 03:08

本文主要是介绍模板,新手读代码砸电脑的诱因,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

模板,新手读代码砸电脑的诱因

模板是一个很初级的设计模式,很多时候我们不知不觉就已经使用了。很多时候新手问你的问题,是模板引起的?

=============

定义

模板的官方定义是:在父类中定义一个算法框架,而将算法的具体实现延迟到子类中,使得可以在不改变算法结构,而改变算法的某些特定步骤。

新手对代码懵懵懂懂的原因

在传统的面向过程编程初级的代码学习中,除了官方API是我们死记硬背的,模块与模块之间的依赖,我们更倾向于的是显式调用。只有明确的调用关系才是“我们认可的~”

而一个没有明确的显式调用关系代码,新手往往就要抓脑袋了。举一个最简单的例子:对回调方法的理解与使用。真的不得不说,认识回调是一个坎,不认识以前觉得很难很高大上,认识了就很简单。

举一个现实的例子吧~

在Android中的Activity里。为了将相同代码进行封装,所以就抽取了相同代码到父类中,而又为了维护方便,依照不同功能建立了不同的父类,一层层的继承下去。然后问题就来啦。

One:

“A:诶?这里没有点击事件的实现啊,简单,写一个。”

“A:God!!!明明只写了一段代码,为什么执行了两次???那次是在哪执行的??”

Two:

“B:我给你说啊,想要设置标题,你只要实现这个方法就好了。”

“A:为啥啊?这个方法都没人调用,光实现了有啥用?”

Three:

“为什么这里就多出来一个View,为什么?为什么?为什么?我啥也没写啊!!”

Four:

“同样的代码,我在Activity中写就可以实现,凭什么在普通的类里面就不可以了?凭什么?凭什么?”

哈哈~真的是一些小白(我)遇到笑话,那这些到底是为什么呢?因为使用了模板,小白却没有意识到。甚至即使对于一个有多年工作经验的程序猿来说也有可能会因为模板而犯错。比如在模板中已经实现了某个不起眼的功能,但因为时间久了,忘了……

吐槽了一下模板“幼稚的小问题”以后,我们先讲模板的优点。

在更通俗的使用中,模板给我们提供了一下便利,也算是模板方法的优点:

模板的优点

  • 封装不变的部分,对可变的实现扩展。

    这里的不变与可变,并不一定局限于算法处理。所有的公共代码都可以封装进父类中。

  • 抽取公共代码后,显而易见的结果就是维护更加方便了

  • 模板实现了一种强制性的规则约定。

    项目组中的“架构师”如果只是口头或文档告诉你应该怎么怎么做,可能执行一段时间规则就不知不觉的被违反了。而如果“架构师”创建了一个模板父类,告诉你必须实现我的类,有了超类的约束,你就真的只能按照规则来了。

模板的缺点

  • 第一个缺点就是我们上面举得例子。模板增加了代码的阅读难度,往往会让新手产生不适感。

  • 为了保持单一,往往需要建立很多个模板,一层层的继承下来。造成的问题就是继承结构过深,增加维护成本。

  • 设计不良引发的问题。如果模板不能抽取非常抽象、公共的部分。多了一些多余的东西,这是灾难性的。因为模板的丁点改动,影响的是所有子类。

  • 继承是侵入性的,设计不良与继承结构过多,非常容易引起子类不得不接受一些不想要的东西。

这篇关于模板,新手读代码砸电脑的诱因的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/975258

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

poj3468(线段树成段更新模板题)

题意:包括两个操作:1、将[a.b]上的数字加上v;2、查询区间[a,b]上的和 下面的介绍是下解题思路: 首先介绍  lazy-tag思想:用一个变量记录每一个线段树节点的变化值,当这部分线段的一致性被破坏我们就将这个变化值传递给子区间,大大增加了线段树的效率。 比如现在需要对[a,b]区间值进行加c操作,那么就从根节点[1,n]开始调用update函数进行操作,如果刚好执行到一个子节点,

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能