上一页 1 2 3 4 5 6 ··· 10 下一页
摘要:注释的目标是确保系统的结构和行为对读者来说是显而易见的,这样他们就可以快速地找到他们需要的信息,并有信心地对系统进行修改。 ​ 有些信息可以在代码中以一种读者已经很容易理解的方式表示,但是有大量的信息不容易从代码中推断出来。 阅读全文
posted @ 2019-12-24 09:50 peida 阅读(479) 评论(0) 推荐(1) 编辑
摘要:好的注释可以使软件的整体质量有很大的不同;写出好的注释并不难;而且(这可能很难相信)写注释其实很有趣。 阅读全文
posted @ 2019-12-23 13:40 peida 阅读(516) 评论(0) 推荐(1) 编辑
摘要:两次设计的方法不仅提高了你的设计,也提高了你的设计能力。设计和比较多种方法的过程将教会您使设计更好或更差的因素。随着时间的推移,这将使你更容易排除糟糕的设计,并专注于真正伟大的设计。 阅读全文
posted @ 2019-12-22 07:25 peida 阅读(333) 评论(0) 推荐(2) 编辑
摘要:异常处理是软件系统中最糟糕的复杂性来源之一。任何形式的特殊情况都会使代码更难理解,并增加bug的可能性。最好的方法是重新定义语义来消除错误条件。对于无法定义的异常,您应该寻找机会在较低的层次上屏蔽它们,这样它们的影响就有限了。 阅读全文
posted @ 2019-12-21 07:13 peida 阅读(360) 评论(0) 推荐(1) 编辑
摘要:拆分或联接模块的决策应该基于复杂性。选择能够隐藏最佳信息、最少依赖和最深接口的结构。 阅读全文
posted @ 2019-12-20 08:00 peida 阅读(483) 评论(0) 推荐(1) 编辑
摘要:在开发模块时,寻找机会让自己承担一些额外的痛苦,以减少用户的痛苦。把复杂留给自己,简单留给用户。 阅读全文
posted @ 2019-12-19 07:51 peida 阅读(620) 评论(0) 推荐(2) 编辑
摘要:软件设计的哲学,解决软件复杂性的原则,中文翻译抢先体验版,持续更新中。 阅读全文
posted @ 2019-12-18 18:47 peida 阅读(1065) 评论(0) 推荐(1) 编辑
摘要:软件系统是分层组成的,其中较高层使用较低层提供的功能。在一个设计良好的系统中,每一层都提供了不同于其上下层的抽象;如果您通过调用方法跟随单个操作在层中上下移动,那么抽象会随着每个方法调用而变化。 阅读全文
posted @ 2019-12-18 15:48 peida 阅读(260) 评论(0) 推荐(1) 编辑
摘要:与专用接口相比,通用接口有许多优点。它们往往更简单,包含更少的方法。它们还提供了类之间更清晰的分离,而特殊用途的接口往往会泄漏类之间的信息。使您的模块具有一定的通用功能是降低整个系统复杂性的最佳方法之一。 阅读全文
posted @ 2019-12-18 15:42 peida 阅读(510) 评论(1) 推荐(2) 编辑
摘要:信息隐藏与深度模块密切相关。如果一个模块隐藏了很多信息,就会增加模块提供的功能,同时也减少了它的接口。这使得模块更深入。相反,如果一个模块没有隐藏很多信息,那么要么它没有太多的功能,要么它有一个复杂的接口;不管怎样,这个模块都是浅层的。 阅读全文
posted @ 2019-12-17 19:39 peida 阅读(388) 评论(0) 推荐(0) 编辑
摘要:通过将模块的接口与其实现分离,我们可以向系统的其他部分隐藏实现的复杂性。模块的用户只需要理解其接口提供的抽象。在设计类和其他模块时,最重要的问题是使它们更深入,这样它们就有了公共用例的简单接口,同时还提供了重要的功能。这最大化了隐藏的复杂性。 阅读全文
posted @ 2019-12-17 19:36 peida 阅读(421) 评论(0) 推荐(0) 编辑
摘要:好的设计不是免费的。它必须是你不断投资的东西,这样小问题就不会积累成大问题。 幸运的是,好的设计最终会收回成本,而且比你想象的要快。 阅读全文
posted @ 2019-12-16 15:09 peida 阅读(532) 评论(0) 推荐(1) 编辑
摘要:如果一个软件系统难以理解和修改,那么它就是复杂的;如果它容易理解和修改,那么它就是简单的。复杂性来自于依赖和模糊的积累。随着复杂性的增加,它会导致变化的扩大、高的认知负荷和未知的未知。 阅读全文
posted @ 2019-12-16 15:05 peida 阅读(601) 评论(0) 推荐(0) 编辑
摘要:更简单的设计允许我们在复杂性变得不可抗拒之前构建更大、更强大的系统。有两种对付复杂性的一般方法:第一种方法是通过使代码更简单、更明显来消除复杂性。处理复杂性的第二种方法是封装它,这样程序员就可以在一个系统上工作,而不必一次暴露系统的所有复杂性。这种方法称为模块化设计。 阅读全文
posted @ 2019-12-16 14:47 peida 阅读(533) 评论(0) 推荐(0) 编辑
摘要:计算机科学中最基本的问题是问题分解:如何把一个复杂的问题分解成可以独立解决的几个部分。问题分解是程序员每天都要面对的核心设计任务。 阅读全文
posted @ 2019-12-16 14:37 peida 阅读(691) 评论(1) 推荐(0) 编辑
摘要:2020年必读书籍推荐:软件设计的哲学(A Philosophy of Software Design),本书190多页,豆瓣的点评分在9分以上,目前只有英文版本,中文版还未上市,英文好的同学建议去直接阅读原版。 阅读全文
posted @ 2019-12-16 14:35 peida 阅读(919) 评论(0) 推荐(0) 编辑
摘要:团队建设的本质:如果你雇佣的人只是因为他们能做一份工作,他们会为你的钱工作。但是如果你雇佣那些和你有同样信念的人,他们会为你付出血汗和泪水。 阅读全文
posted @ 2019-12-09 10:14 peida 阅读(447) 评论(0) 推荐(0) 编辑
摘要:你需要就一份新工作进行沟通时:比如你的薪水、福利,或者我个人最喜欢的每周工作时间缩短等,当公司问你“你想要多少?”或者“这是我们的报价,你说呢?” 最后关于薪资的谈话可能是最伤脑筋的部分,但谈判过程开始得要早得多。这意味着你可以进入最后的对话,为自己的成功做好准备,同时也会感到更少的压力。 实现这一点的方法是遵循某些基本原则,我将在本文中介绍这些原则。我将以薪资谈判为例,但同样的原则也适用于缩短工作周的谈判。 阅读全文
posted @ 2019-12-09 10:01 peida 阅读(649) 评论(0) 推荐(0) 编辑
摘要:程序员提高编程技能的5个建议: 建立目标 不断练习 分享经验 阅读代码 积极提问 阅读全文
posted @ 2019-12-09 09:49 peida 阅读(624) 评论(0) 推荐(3) 编辑
摘要:能做和做好是两个事情。能做和不能做是一个0或1的选择。做好是一个从0到1的过程。简单的做事只是码农思维,能够选择去做正确的事情,同时并将事情做正确才是一个真正优秀工程师。 阅读全文
posted @ 2019-11-25 13:50 peida 阅读(102) 评论(0) 推荐(0) 编辑
摘要:正确理解述职的意义,把握述职的本质目的,做好准备工作,事后及时总结复盘,并制定有效的 改进计划,持续迭代,加快成长速度才是最重要的。 述职前中后,每一个阶段都是在检验我们综合能力是否提升到足够的高度,我们能力和认知有没有突破性成长,我们有没有对团队做出核心的价值贡献。 成长是自己的事情,成长需要开放的心态,良好的复盘能力,加上持续的行动能力,三者结合起来,才能速成长。 阅读全文
posted @ 2019-11-25 13:48 peida 阅读(262) 评论(0) 推荐(0) 编辑
摘要:管理学大师德鲁克说:你如果你无法度量它,就无法管理它。要想做有效的管理,就很难绕开度量的问题。 软件开发的过程或者技术团队的管理也存在着如何去合理的度量效率的问题。而度量是把双刃剑,度量具有极强的引导性。度量指标会激励团队重视并改善能够度量元素,也会导致你忽视无法度量的元素,并使得问题进一步恶化。所 阅读全文
posted @ 2018-01-19 10:29 peida 阅读(15422) 评论(2) 推荐(1) 编辑
摘要:maven编译jar时,出现无法确定 T 的类型参数的异常原因和解决办法 阅读全文
posted @ 2015-01-12 13:35 peida 阅读(15516) 评论(2) 推荐(0) 编辑
摘要:Guava学习笔记目录和参考资料! 阅读全文
posted @ 2013-08-01 08:58 peida 阅读(26844) 评论(6) 推荐(8) 编辑
摘要:在Guava中新增了一个新的类型Range,从名字就可以了解到,这个是和区间有关的数据结构。从Google官方文档可以得到定义:Range定义了连续跨度的范围边界,这个连续跨度是一个可以比较的类型(Comparable type)。 阅读全文
posted @ 2013-08-01 08:30 peida 阅读(19424) 评论(3) 推荐(4) 编辑
上一页 1 2 3 4 5 6 ··· 10 下一页