首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我是否应该总是喜欢更一般的类型到特定类型?

这个问题涉及到了一般类型和特定类型的选择,以及它们之间的权衡。在做决策时,我们需要考虑以下几个方面:

  1. 一般类型和特定类型的定义:一般类型是指适用于多种场景的类型,而特定类型是指针对特定场景或需求的类型。一般类型通常具有更广泛的适用性和更低的成本,而特定类型则可以提供更高的性能和更精细的控制。
  2. 需求和场景:需要考虑你的需求和场景是否适合使用一般类型或特定类型。如果你的需求和场景比较简单,那么一般类型可能就足够了;如果你的需求和场景比较复杂,那么特定类型可能更适合。
  3. 成本和性能:一般类型通常具有更低的成本,但性能可能不如特定类型;特定类型则可能具有更高的性能,但成本也更高。因此,在选择时需要权衡成本和性能的需求。
  4. 灵活性和控制性:一般类型通常具有更高的灵活性,可以更容易地适应不同的需求和场景;特定类型则可以提供更高的控制性,可以更精细地控制系统的行为。因此,在选择时需要考虑你是否需要更高的灵活性或更高的控制性。

综上所述,是否应该总是喜欢更一般的类型到特定类型,取决于你的需求和场景、成本和性能的需求以及灵活性和控制性的需求。在做决策时,需要根据具体情况进行权衡和选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2018年伊始,系统编程语言Rust为何令程序员感到兴奋?

在开始使用Rust的时候,能够做到这样的权衡(在牺牲一点性能的情况下使程序更容易编写)是非常好的。最喜欢这个特别权衡的地方是它是明确的。...可以在程序里用.clone()搜索每个地方 ,并对它们进行审计—这个函数是否被调用了很多次?应该担心吗?刚刚查过程序中使用clone()的每一个地方,在程序开始的时候,只调用一次或两次。...喜欢这些库的存在,它们文档齐全,使用方便! 另一个喜欢Rust Crate(一般是Rust)的地方是它们通常不会在它们所曝光的概念基础上增加不必要的抽象。...直到再次开始使用它,才意识到Rust的可用性有了如此多的改进!所以,如果我没有意识到,我想大多数其他人都没有:) Rust有难以学习的臭名。当然,这总是会有点难!...,但IMO的“有10种特定的人群适合用Rust”比一般的包容性声明显更有用。 这里有几条关于如何回答“谁适合用Rust?”这个问题的建议:(这些并不意味着是排他性的,但它们的目的是非常具体的!

4.6K100

加入DAO的一些注意事项

如果在特定的 DAO中没有适合你的位置,也要保持乐观态度!因为还有很多其他的选择。以后你也许可以加入你喜欢的DAO。 新兴项目 这可能是最好的起点。当一个核心团队启动一个项目时,一般会有很多事情要做。...,并不总是发生,但一定要警惕。...已建的项目没有使用这种 DAO,因为它主要用于试图接触一些潜在用户的新项目。已建立的项目通常使用内部贡献者,并且在需要特定类型的内容时更愿意奖励自己的社区。...如何选择 DAO 应该是透明的,你应该利用它。在加入 DAO 之前,最好先了解一下 DAO 是如何运作的,涉及到什么样的成员,他们是如何协同工作的,它是如何组织的……回答这些问题相对简单。...我想如果你还在阅读这篇文章,那是因为你正在寻找更成熟的东西,并且想要真正参与到 DAO 中。 综上所述,首先我会建议找到一个你喜欢并且你相信的项目!

30110
  • 要成为优秀的机器人工程师,该如何选择课程?

    人们在生活中做出“坏”决定的主要原因是在做出决定之前,他们没有花时间真正考虑自己的选择。他们只是很快做出一个选择要“得到它”,但很快就后悔了,因为在内心深处,他们意识到自己应该更深入地思考。...在做出决定之前,你应该多去图书馆或书店,制定特定的计划,或许这会让你知道该如何做出选择。 问题 2: 什么类型的学位课程适合我本科?硕士?专科?第二个你需要回到的问题就是:什么类型的课程适合我?...这个问题是Eric提出来的,他想知道,一个专科学位是否能找到一份机器人的工作。基本回答是:Yes,这确实能找到一份机器人相关的工作。但是,你选择什么类型的学位将会影响你胜任什么类型的工作。...有了这方面的知识,你就可以在开放日的过程中向课程导师提出更好的问题了。例如,你看起来很喜欢某个课程,但在这个特定的课题下是否有足够的模块,你可以问他们“在我的学位课程期间,我如何才能获得更多课题?”...这个问题的答案,我们几乎总是说:No. 无论你选择任何学位课程,一个学位是否“足以找到工作”的想法,很不幸,不再适用于任何领域。在过去,它可能已经足够,但现在已经不行了。

    63750

    Java 8 开发的 4 大技巧

    Optional应该只用于返回类型 ……不是参数,也不是字段。幸运的是,IntelliJ IDEA的让你打开检查来查看是是否遵循这些建议。 ? Optional值应在遇到它们的地方中处理。...不应该简单调用get() Optional的功能是表达这个值可能是空的,并让你应对这种情况。因此,在对它做任何事情之前一定要检查是否有一个值。...明确 类型信息缺少lambda表达式,所以你可能会觉得包含类型信息用于参数会很有用。 ? 正如你所见,这回变得相当笨拙。所以我更喜欢给参数取一个有用的名字。...4.Stream Stream API是Java 8另一个大特点,并且我认为我们还真的不知道这对我们的编码方式会产生多大的改变。下面是我发现的一些有用的东西 排队点操作符 我个人更喜欢排队我的流操作。...我所做的性能测试表明这种重构令人惊讶——并不总是可预测性能是保持不变,改善还是变得更糟。与往常一样,如果性能在应用程序中是关键,那么在交付一种风格到另一种之前衡量它。

    59610

    Java 8 开发顶级技巧

    Optional应该只用于返回类型 ……不是参数,也不是字段。幸运的是,IntelliJ IDEA的让你打开检查来查看是是否遵循这些建议。 ? Optional值应在遇到它们的地方中处理。...不应该简单调用get() Optional的功能是表达这个值可能是空的,并让你应对这种情况。因此,在对它做任何事情之前一定要检查是否有一个值。...明确 类型信息缺少lambda表达式,所以你可能会觉得包含类型信息用于参数会很有用。 ? 正如你所见,这回变得相当笨拙。所以我更喜欢给参数取一个有用的名字。...排队点操作符 我个人更喜欢排队我的流操作。...我所做的性能测试表明这种重构令人惊讶——并不总是可预测性能是保持不变,改善还是变得更糟。与往常一样,如果性能在应用程序中是关键,那么在交付一种风格到另一种之前衡量它。

    55210

    Java 8 开发的 4 大顶级技巧

    Optional应该只用于返回类型 ……不是参数,也不是字段。幸运的是,IntelliJ IDEA的让你打开检查来查看是是否遵循这些建议。 ?...java 8 不应该简单调用get() Optional的功能是表达这个值可能是空的,并让你应对这种情况。因此,在对它做任何事情之前一定要检查是否有一个值。...java 8 明确 类型信息缺少lambda表达式,所以你可能会觉得包含类型信息用于参数会很有用。 ? java 8 正如你所见,这回变得相当笨拙。所以我更喜欢给参数取一个有用的名字。...Stream Stream API是Java 8另一个大特点,并且我认为我们还真的不知道这对我们的编码方式会产生多大的改变。下面是我发现的一些有用的东西 排队点操作符 我个人更喜欢排队我的流操作。...java 8 我所做的性能测试表明这种重构令人惊讶——并不总是可预测性能是保持不变,改善还是变得更糟。与往常一样,如果性能在应用程序中是关键,那么在交付一种风格到另一种之前衡量它。

    57320

    编程之魂之C# – 与C#之父Anders的访谈

    有时尝试从不同;角度来处理问题是很有益的。 你会更喜欢添加一种语言特性让每个人都提高一 点效率,还是喜欢让少数开发者变得更加高效呢?...这不像有人曾经问过我们的:“我们喜欢把查询嵌入到语言里”,因为你并没有真正考虑这些你能考虑的概念。 我不愿意说我们从某种特定方式获得反馈。这是一一个有机的过程,我们可以从很多不同的地方得到它们。...你能获得大量的开放源代码项目供研究和学习。 一般来说,对我成为一名优秀的程序员有帮助的是了解不同的编程风格和不同类型的编程语言。...接着,你要从语言中得到一些东西,从而使编程更容易而且更安全,比如保证对象的不变性、你所知道的没有副作用的纯函数、分析孤立的对象图,这样你会知道一幅对象图的特定引用是否已经被其他人使用过。...你是否要从它开始,那要视情况而定。我无法确定你最开始的编程导论是否应该是函数式编程,不过我毫不置疑地认为它应该是课程的一部分。 *人们应该从你的经历中学到什么经验和教训呢?

    83920

    Java 命名规范(非常全)

    Optional应该只用于返回类型 ……不是参数,也不是字段。幸运的是,IntelliJ IDEA的让你打开检查来查看是是否遵循这些建议。 Optional值应在遇到它们的地方中处理。...不应该简单调用get() Optional的功能是表达这个值可能是空的,并让你应对这种情况。因此,在对它做任何事情之前一定要检查是否有一个值。...明确 类型信息缺少lambda表达式,所以你可能会觉得包含类型信息用于参数会很有用。 正如你所见,这回变得相当笨拙。所以我更喜欢给参数取一个有用的名字。...甚至是lambda所代表的函数式接口: 3.针对Lambda表达式设计 我认为lambda表达式有点像泛型——和泛型一起,我们经常使用它们(例如,添加类型信息到List),但最好我们可以设计一种方法或一个具有泛型类型...4.Stream Stream API是Java 8另一个大特点,并且我认为我们还真的不知道这对我们的编码方式会产生多大的改变。下面是我发现的一些有用的东西 排队点操作符 我个人更喜欢排队我的流操作。

    1.1K30

    Java 8 开发的 4 大顶级技巧

    Optional应该只用于返回类型 ……不是参数,也不是字段。幸运的是,IntelliJ IDEA的让你打开检查来查看是是否遵循这些建议。 ? Optional值应在遇到它们的地方中处理。...不应该简单调用get() Optional的功能是表达这个值可能是空的,并让你应对这种情况。因此,在对它做任何事情之前一定要检查是否有一个值。...明确 类型信息缺少lambda表达式,所以你可能会觉得包含类型信息用于参数会很有用。 ? 正如你所见,这回变得相当笨拙。所以我更喜欢给参数取一个有用的名字。...4.Stream Stream API是Java 8另一个大特点,并且我认为我们还真的不知道这对我们的编码方式会产生多大的改变。下面是我发现的一些有用的东西 排队点操作符 我个人更喜欢排队我的流操作。...我所做的性能测试表明这种重构令人惊讶——并不总是可预测性能是保持不变,改善还是变得更糟。与往常一样,如果性能在应用程序中是关键,那么在交付一种风格到另一种之前衡量它。

    50620

    前端 vs 后端:哪一个适合你?

    职业满足感 如果你选择成为一名开发人员是因为你想获得职业满足感,并做一些你喜欢的事情,那么我的建议是,当你开始时,前后端都要做。同时涉猎前端和后端,这样你就能感受到你更喜欢的是什么。这么做会很辛苦吗?...试一试水,看看当你用它的时候,其中一个方向是否真的能吸引到你。同时,你要意识到,无论你选择哪个,一开始都会很困难。我想说的是,在你决定要把重点放在哪里之前,给自己一年或两年的时间来研究整个流程。...这将给你足够的时间来解决最初的“哇,这太糟糕了,因为它很难”的问题,同时还能让你真正评估它是否是你喜欢使用的技术。 虽然每个人都有不同的品味,但是看看其他开发人员喜欢使用哪些语言和技术也是很有趣的。...在真正转向后端之前,我做了 3 年的全栈开发。吸引我来到后台的是 Ruby 的简洁。JavaScript 和前端语言对我来说总是缺乏组织性。我还热衷于优化代码性能。我喜欢想办法让事情运行得更好更快。...后端似乎给了我更多的机会。 最后,我不是一个非常注重视觉或艺术的人。有些人可以看看网页,然后想办法把它放在什么地方。我从来都不擅长这个,所以后端让我更自然、更舒服。

    1.5K20

    以数据为中心和模型为中心的AI是贝叶斯论和频率论的另一种变体吗?

    在这篇文章中,我将对这两种方法提供一个新的视角。我将从统计的角度来看它们,看看它是否可以阐明哪种方法更好以及在什么情况下更好。...但这里有一个很大的问题:归纳偏差(不管它是否有用)仍然是一种偏差。 当选择一个特定的架构时,也限制了从数据中学到的东西。...这就是为什么这些衡量标准总是比率的原因,也就是说它们只能判断一个模型是否比另一个更好。...我们最终得到的是一个经过训练的模型,该模型的模型架构和超参数可以满足对收集到的数据进行建模并获得结果。 我曾参与过许多新开发的深度学习项目,每一次我看到的最大改进都来自于数据清理。...选择哪一个 一般·的文章会在结尾都会告诉你:成年人是不做选择题的,我全都要:使用归纳偏见和清理数据。

    41210

    Redis作者谈如何编写系统软件的代码注释

    ,然而,经过一番思考后,我意识到这个主题更适合博客文章。...对我来说答案很简单:我希望API文档与代码完全匹配。随着代码的更改,应该更改文档。 出于这个原因,在函数代码前加入使用这个函数的注释使API文档更接近代码,三个好处: 1....指南注释存在的唯一理由是降低程序员阅读某些代码的认知负担。 细节注释 指南注释是非常主观的工具。你可能喜欢或不喜欢他们。我爱他们。...它们一般都不是很好,我试图避免它们,但避免并不总是可能的,有时希望不要永远忘记一个问题,我更喜欢在源代码中放置一个标识。...至少有一个人应该定期查看这些注释,看看是否可以将注释放在更好的位置,或者该问题是否已不再相关或可以立即解决。

    83260

    李飞飞高徒、AI“网红”Karpathy:训练神经网络不得不看的33个技巧

    如何训练一个神经网络 基于以上两个事实,我为自己开发了一个特定的过程,当我将神经网络应用到一个新的问题时,我都遵循这个过程。本文中我将尝试描述这个过程。 你会看到,它是非常重视上述两个原则的。...我会寻找数据中的不平衡和偏差。我通常也会关注我自己对数据进行分类的过程,这个过程暗示了我们最终要探索的各种架构类型。 举个例子,只有局部的特性是否足够,还是需要全局上下文?...我也喜欢在同一个图中可视化标签和预测,并确保一旦达到最小损失,它们最终会完美地对齐。如果没有完美对齐,那么在某个地方就有一个bug,我们无法继续到下一个阶段。 验证训练损失的下降。...我喜欢为我正在做的事情写非常具体的函数,让这个函数能work,然后再一般化,确保得到相同的结果。这通常适用于向量化代码,我会先写出完整的循环版本,然后再将它转换为向量化代码。...后面可以做一些更自定义设置和改进,并实现比它更好的性能。 选Adam总没错。在设定baseline方法的早期阶段,我喜欢使用学习率为3e-4的Adam架构。

    1.2K30

    xBIM 基础02 快速入门

    (IDisposable),所以总是应该在using语句中使用它们,如下所示: 1 using (var model = IfcStore.Open(fileName, editor, true)) 2...这些也应该在using语句中使用,因此它们具有适当的范围,以便在发生某些情况时进行最终回滚操作。您必须明确提交事务以保留更改。事务不能嵌套,因此当时总是只有一个事务。...每个模型都是特定于模式的,因此它是IFC2x3或IFC4或其他特定模式。...您将在上面的代码中看到,此函数使用可选的类型化对象初始值设定项来设置对象的值。没有必要使用它们,但我个人喜欢它,因为我可以看到结果实体的结构。...没有必要使用它们,但我个人喜欢它,因为我可以看到结果实体的结构。

    85430

    上下文变量值(context values)陷阱及在 Go 中如何避免或缓和这些陷阱

    与其产生这种缺陷,许多开发者更喜欢在他们的路由函数中使用中间件来避免这样的错误。这也帮助应用更易于清晰地理解是否需要认证。最终,这也易于解释他们的代码,因为你能轻易判断出是否用户对象会预期出现。...有几种最小化风险的方式,但是开发者总是免不了出错,而这只会在运行时出现。 有什么方法避免吗?对于初学者,不要根据我们在以上例子中的方式使用上下文变量,而是使用特定类型。...我发现这个方案意外适用于在所有的处理器中你需要相似的特定于上下文的数据的场景。...但是这并不是说,”我们最终需要特定路由的中间件“,然后放弃这种方案;而是,除非你确实遇到了它不适宜的场景否则你应该尽量使用它。 当不适宜的场景最终发生时,我有一个想谈谈的方案。...这个巨型上下文(我喜欢这样叫它)有自己的优缺点,可能经常有所帮助,但是我并没有在这儿讨论它因为我想在梳理它之前试验更多的可能性。我怀疑最终会在接下来几周再写一篇文章讨论其细节。

    1.7K30

    《代码整洁之道》

    它不仅让我们看到代码的优劣,还予我们以借戒规之力化劣为优的攻略。 我喜欢优雅和高效的代码。...我并不从一开始就按照规则写函数。我想没人做得到。 每个系统都是使用某种领域特定语言搭建,而这种语言是程序员设计来描述那个系统的。函数是语言的动词,类是名词。...注释的恰当用法是弥补我们在用代码表达意图时遭遇的失败。注意,我用了“失败”一词。我是说真的。注释总是一种失败。我们总无法找到不用注释就能表达自我的方法,所以总要有注释,这并不值得庆贺。...在任何系统中,我们有时会希望能够灵活地添加新数据类型,所以更喜欢在这部分使用对象。另外一些时候,我们希望能灵活地添加新行为,这时我们更喜欢使用数据类型和过程。...我们喜欢把由某个公共函数调用的私有工具函数紧随在该公共函数后面。这符合了自顶向下原则,让程序读起来就像一篇报纸文章。 第11章 系统 系统也应该是整洁的。侵害性架构会湮灭领域逻辑,冲击敏捷能力。

    91120

    谁在玩你的手机游戏?深入了解玩家,帮助开发者取得成功。

    ,而「休闲玩家(casual)」玩家总是玩些低难度、没什么挑战的游戏。...我们也确实了发现了一些特定的游戏类型对应某类游戏玩家。 ? 每个玩家群体在各类手机游戏玩家中所占比例 「网游爱好者者」)几乎什么类型的游戏都玩,而且不太可能会偏好某一特定种类。...「爱玩的探索者」虽然也倾向于玩各种类型的游戏,但是更喜欢玩动作类和冒险类的游戏。「被影响玩家」热衷于益智类游戏,但是也很喜欢冒险、策略游戏以及小游戏。「尝试性跟随者」喜欢牌类游戏、小游戏和文字游戏。...在设计游戏或增加新功能时考虑玩家差异: 需要明确:这个功能是为特定游戏玩家群体设计,还是为所有的一般玩家? 得到信息:从目标游戏玩家群体处得到反馈。...各种类型的玩家通过多种渠道发现游戏,但是如果你正在为特定类型的玩家定制游戏,你应该优化策略,着重关注于他们参与最多的渠道。 定制游戏参与策略来刺激你的目标游戏群体。

    74240

    怎么才能写出好看的Python代码?这五个工具你得用上

    1、简单聊聊 首先得给大家说说我为什么直接从第十三章开始读,简单说就是我对这一章更感兴趣,当然本书其他章节也是非常优秀的,后面我也会抽时间阅读学习。...我想,通过本书学习,应该是可以让你学到很多自己之前不曾注意到的代码编写技巧和方法,更加精进你的代码和代码编写方式的,如:代码格式化技巧。...所以本书比较适合有一定Python基础的同学,用我的话来说就是:你应该至少看过小甲鱼的Python入门课。...其实我自己平时写Python代码是很少写类型注解的,不过作者说的“虽然相比于传统Python代码,编写类型注解的代码总是更麻烦一些,需要进行额外的工作,但和类型注解所带来的诸多好处相比是完全值得的”,这个我是非常认同的...而且类型注解,对于大型项目来说更是重要,完善的类型注解可以让伙伴更好地阅读理解代码,也更方便代码的重构或者修改。

    51810

    iOS 开发面试通关指南:67 个必知问题!

    问题 一条简短的提示:我是不会提供这些问题的完整答案的(只有一些我个人预期你至少应该了解的基础),因为我认为,如果你自己去寻找答案,应该能准备得更好。...阅读有关特定主题的文章会是一个不错的选择,可以为你提供更多信息,从而助你在面试中发挥得更好。 不过,或早或晚,我很可能会在自己的博客中对所有内容进行讲解。...但是,我倒不是很担心这一点,因为如果面试针对某些特定的需要这些知识的项目,那么职位描述里面很有可能会提到。...这道题很简单,但目的只在于看你是否知道其中的区别,而guard并不总是首选。 class和struct有什么区别?举例说明分别什么情况下应该选用。...不要误会,把CocoaPods作为依赖管理器(dependency manager)并没有错,但首先应该做的不是这个。 55.你用依赖管理器吗?你更喜欢哪个?

    1.2K20
    领券