程序员每天会阅读哪些技术网站来提升自己?

程序员每天都会通过阅读各种技术网站来提升自己的技能和知识。以下是一些常见的技术网站:

Stack Overflow:这是一个面向程序员的问答社区,程序员可以在这里提问和回答其他人的问题。Stack Overflow上有大量的技术问题和解答,涉及多种编程语言和技术领域,是程序员解决技术难题的重要资源。

GitHub:GitHub是一个开源代码托管平台,许多程序员和开发团队都在这里托管和协作他们的代码项目。通过浏览GitHub上的项目,程序员可以学习到最新的编程实践和技术趋势,同时也能参与到开源项目中,提升自己的编程能力。

CSDN:这是国内程序员访问最多的地方之一,内容比较齐全,涵盖了各种编程语言、技术框架和软件开发工具等。虽然文章水平有一定差异,但通过阅读高质量的博客和教程,程序员可以了解到最新的技术动态和实践经验。

Medium:这是一个高质量的博客平台,许多程序员和技术专家在上面发表技术文章。这些文章通常深入剖析某个技术点或分享某种编程实践,对于程序员来说是非常有价值的学习资源。

InfoQ:InfoQ是一个专注于促进软件开发领域知识与创新的中文社区,提供最新技术资讯、技术文章、技术图书、视频教程、技术活动等。程序员可以通过阅读InfoQ上的文章,了解到最新的技术趋势和创新实践。

TechCrunch:TechCrunch是一个提供技术新闻和创业资讯的网站,对于关注新兴技术和创业动态的程序员来说非常有价值。

除了上述网站,还有很多其他的技术网站和论坛,如Reddit的技术分区、掘金网、博客园、思否等,都是程序员们常去的地方。每个程序员可以根据自己的需求和兴趣选择适合自己的技术网站进行学习和提升。同时,也建议程序员保持对新技术和新趋势的敏感度,定期浏览这些网站,以便及时了解到最新的技术动态和最佳实践。

让程序员提升的书籍

软件开发大师的不朽经典,几代程序员书架上的必备书籍。每一个优秀的程序员都对这本书记忆深刻。书中清晰揭示了重构的过程,解释了重构的原理和实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了60多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。本书提出的重构准则将帮助开发人员一次一小步地修改代码,从而减少了开发过程中的风险。

每一章内容简介

  • 重构的原则

一线的实践者们经常很随意地使用“重构”这个词——软件开发领域的很多词汇都有此待遇。我使用这个词的方式比较严谨,并且我发现这种严谨的方式很有好处。(下列定义与本书第1版中给出的定义一样。)“重构”这个词既可以用作名词也可以用作动词。名词形式的定义是:

重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。

  • 代码的坏味道

难题来了!解释“如何删除一个实例变量”或“如何产生一个继承体系”很容易,因为这些都是很简单的事情,但要解释“该在什么时候做这些动作”就没那么顺理成章了。除了露几手含混的编程美学(说实话,这就是咱们这些顾问常做的事),我还希望让某些东西更具说服力一些。

我们并不试图给你一个何时必须重构的精确衡量标准。从我们的经验看来,没有任何量度规矩比得上见识广博者的直觉。我们只会告诉你一些迹象,它会指出“这里有一个可以用重构解决的问题”。你必须培养自己的判断力,学会判断一个类内有多少实例变量算是太大、一个函数内有多少行代码才算太长。

如果你无法确定该采用哪一种重构手法,请阅读本章内容和书后附的“重构列表”来寻找灵感。你可以阅读本章或快速浏览书后附的“坏味道与重构手法速查表”来判断自己闻到的是什么味道,然后再看看我们所建议的重构手法能否帮到你。也许这里所列的“坏味道条款”和你所检测的不尽相符,但愿它们能够为你指引正确方向。

  • 构筑测试体系

重构是很有价值的工具,但只有重构还不行。要正确地进行重构,前提是得有一套稳固的测试集合,以帮我发现难以避免的疏漏。即便有工具可以帮我自动完成一些重构,很多重构手法依然需要通过测试集合来保障。

我并不把这视为缺点。我发现,编写优良的测试程序,可以极大提高我的编程速度,即使不进行重构也一样如此。这让我很吃惊,也违反许多程序员的直觉,所以我有必要解释一下这个现象。

  • 介绍重构名录

最初这个名录只是我的个人笔记,我用它来提示自己如何以安全且高效的方式进行重构。然后我不断精炼这份名录,对一些重构的深入探索又引出了更多的重构手法。对于不太常用的重构手法,我还是会不断参阅这份名录。

  • 第一组重构
  • 封装

分解模块时最重要的标准,也许就是识别出那些模块应该对外界隐藏的小秘密了[Parnas]。数据结构无疑是最常见的一种秘密,我可以用封装记录或封装集合手法来隐藏它们的细节。即便是基本类型的数据,也能通过以对象取代基本类型进行封装——这样做后续所带来的巨大收益通常令人惊喜。另一项经常在重构时挡道的是临时变量,我需要确保它们的计算次序正确,还得保证其他需要它们的地方能获得其值。这里以查询取代临时变量手法可以帮上大忙,特别是在分解一个过长的函数时。

  • 搬移特性

有时我还需要单独对语句进行搬移,调整它们的顺序。搬移语句到函数和搬移语句到调用者可用于将语句搬入函数或从函数中搬出;如果需要在函数内部调整语句的顺序,那么移动语句就能派上用场。有时一些语句做的事已有现成的函数代替,那时我就能以函数调用取代内联代码消除重复。

对付循环,我有两个常用的手法:拆分循环可以确保每个循环只做一件事,以管道取代循环则可以直接消灭整个循环。

最后这项手法,我相信一定会是任何一个合格程序员的至爱,那就是移除死代码。没什么能比手刃一段长长的无用代码更令一个程序员感到满足的了。

  • 重新组织数据

数据结构在程序中扮演着重要的角色,所以毫不意外,我有一组重构手法专门用于数据结构的组织。将一个值用于多个不同的用途,这就是催生混乱和bug的温床。所以,一旦看见这样的情况,我就会用拆分变量将不同的用途分开。和其他任何程序元素一样,给变量起个好名字不容易但又非常重要,所以我常会用到变量改名。但有些多余的变量最好是彻底消除掉,比如通过以查询取代派生变量。

  • 简化条件逻辑

程序的大部分威力来自条件逻辑,但很不幸,程序的复杂度也大多来自条件逻辑。我经常借助重构把条件逻辑变得更容易理解。我常用分解条件表达式处理复杂的条件表达式,用合并条件表达式厘清逻辑组合。我会用以卫语句取代嵌套条件表达式清晰表达“在主要处理逻辑之前先做检查”的意图。如果我发现一处switch逻辑处理了几种情况,可以考虑拿出以多态取代条件表达式重构手法。

  • 重构API

好的API会把更新数据的函数与只是读取数据的函数清晰分开。如果我看到这两类操作被混在一起,就会用将查询函数和修改函数分离将它们分开。如果两个函数的功能非常相似、只有一些数值不同,我可以用函数参数化将其统一。但有些参数其实只是一个标记,根据这个标记的不同,函数会有截然不同的行为,此时最好用移除标记参数将不同的行为彻底分开。

  • 处理继承关系

在最后一章里,我将介绍面向对象编程技术里最为人熟知的一个特性:继承。与任何强有力的特性一样,继承机制十分实用,却也经常被误用,而且常得等你用上一段时间,遇见了痛点,才能察觉误用所在。继承本身是一个强有力的工具,但有时它也可能被用于错误的地方,有时本来适合使用继承的场景变得不再合适——若果真如此,我就会用以委托取代子类或以委托取代超类将继承体系转化成委托调用。

代码整洁之道

“阅读这本书有两种原因:第一,你是个程序员;第二,你想成为更好的程序员。很好,IT行业需要更好的程序员!”——罗伯特·C. 马丁(Robert C. Martin)

本书提出一种观念:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,本书作者给出了一系列行之有效的整洁代码操作实践。这些实践在本书中体现为一条条规则(或称“启示”),并辅以来自现实项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。

本书阅读对象为一切有志于改善代码质量的程序员及技术经理。书中介绍的规则均来自作者多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可资借鉴的价值。

  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值