⑴ 程序员必知!迪米特法则的实战应用与案例分析
迪米特法则,也称为最少知识原则(Least Knowledge Principle, LKP),强调一个对象对其他对象保持最少了解。核心是降低类间耦合,提高模块独立性。简言之,“talk only to your immediate friends”,指一个类只与直接关联对象通信,避免直接与其他类交互。
其目的是降低耦合度,提升系统灵活性和可维护性。在Java开发中,应用迪米特法则可设计更符合实际需求的类和接口,提高代码质量。
迪米特法则适用于减少类间直接交互的场景,以降低耦合度,提高维护性与扩展性。通过中介者模式改进代码,如将AllInOneDevice直接与Printer和Scanner交互改为通过DeviceManager间接交互,实现更合理的类间通信。
总结,迪米特法则作为面向对象设计原则之一,重点在降低耦合度,提升系统维护性和可扩展性。遵循此原则有助于设计更灵活、可复用的代码结构,但需注意适度应用,避免过度抽象,以免影响性能。
⑵ 作为一个程序员,应该有哪些必须知道的事
1. 懂得分享。尽可能使用开源,并且当你有能力的时候,要对其有所贡献。聚全社会之智慧,胜过某些“大”公司之短视。
2. 公平竞争。尝试其他技术、框架、方法和观点。不要总以为只有你的选择才是可行的。别的选择也有可能比你的要强得多。要以开放的心态,来检验其他人的选择。
3. 不要攻击他人。像第2条所说的,不要仅仅因为别人恰巧使用.Net、Java或PHP就去攻击他们(我在这方面有一次教训)。有时,它们或许要比你所认为的更有效。只要别人不是一无是处,你就可以从他们那里学到很多东西。
4. 自我完善。尽量发布可以运行的代码。不要指望QA能给你找出所有的程序错误。要经常并且全面深入地测试你的代码。
5. 伤害他人要道歉。代码审查是一个不错但很少用的想法。指导经验比你少的程序员,有助于整个团队。不要公开批评他人。指导并不是贬低别人。别人有时候会接受,有时候不接受。其实,有时候你可能会从自认为水平不如你的人身上学到很多东西。
6. 未雨绸缪。动手写代码之前要尽量理解要解决的问题。要做原型、从网上查找实例、跟其他也做这个的人讨论或者只是练练手而已。构建你从未做过或用过的东西是个坏习惯。如果开始就有思路,结果可能会更好。
7. 拿得起放得下。不要害怕替换、重写、重构或者放弃垃圾代码。有时候,如果碰到可留可不留的代码,直接扔掉才是上策。永远不要爱上你的代码。
8. 平衡生活——学习、思考、绘画、唱歌、跳舞、工作、玩耍,每样都会一点。我喜欢Google的方式,在那里,你有20%的时间用来思考任何你认为值得做的事情。老板应该提供休息室、娱乐室或者一些能让人放松清醒的环境。
9.编程是一项艰苦的脑力劳动活;有时你的大脑确实需要休息一下。拒绝例行公事地每周工作80小时,否则你的工作质量将大打折扣,花费大量时间取得的成果将前功尽弃。另外,如何释放工作生活压力,可以参考伯乐在线的这篇文章:《3步释放工作和生活压力》。
10. 每天下午小憩一会。每天工作24小时不会让你更有效率。休息、回家,然后打个盹。通常,很多难题是在我回家的时候解决掉的,解决方法通常在我开车时或第二天早上突然想到。
11. 不要闭门造车。读读博客、学习新语言和框架、参与讨论以及看看同行在干什么。两耳不闻业界事,你就无法成为一名更优秀的程序员。
12. 保持好奇心。想想塑料杯中的种子:根向下长,枝叶向上长,没有人知道这是为什么,但是我们都是这样的。一般来说,在编程和技术世界,每天都有新奇东西出现。看!很神奇吧!每天学习,让你思维更广,技能更新,选择也就更广。如果你认为编程枯燥乏味,那么你要该换行了。
⑶ 如何成为一个程序老手,新手必知的40个小技巧
老鸟和新手的一个很大区别来自于debug的能力。其中最主要又可以从两方面看出来:
从高层往底层找错。
科学方法。
0.重构是程序员的主力技能。
工作日志能提升脑容量。
先用profiler调查,才有脸谈优化。
注释贵精不贵多。杜绝大姨妈般的“例注”。漫山遍野的碎碎念注释,实际就是背景噪音。
普通程序员+google=超级程序员。
单元测试总是合算的。
不要先写框架再写实现。最好反过来,从原型中提炼框架。
代码结构清晰,其它问题都不算事儿。
好的项目作风硬派,一键测试,一键发布,一键部署; 烂的项目生性猥琐,口口相传,不立文字,神神秘秘。
编码不要畏惧变化,要拥抱变化。
常充电。程序员只有一种死法:土死的。
编程之事,隔离是方向,起名是关键,测试是主角,调试是补充,版本控制是后悔药。
一行代码一个兵。形成建制才能有战斗力。单位规模不宜过大,千人班,万人排易成万人坑。
重构/优化/修复Bug,同时只能作一件。
简单模块注意封装,复杂模块注意分层。
人脑性能有限,整洁胜于杂乱。读不懂的代码,尝试整理下格式; 不好用的接口,尝试重新封装下。
迭代速度决定工作强度。想多快好省,就从简化开发流程,加快迭代速度开始。
忘掉优化写代码。过早优化等同恶意破坏;忘掉代码作优化。优化要基于性能测试,而不是纠结于字里行间。
最好的工具是纸笔;其次好的是markdown。
leader问任务时间,若答不上来,可能是任务拆分还不够细。
宁可多算一周,不可少估一天。过于“乐观”容易让boss受惊吓。
最有用的语言是English。其次的可能是Python。
百闻不如一见。画出结果,一目了然。调试耗时将大大缩短。
资源、代码应一道受版本管理。资源匹配错误远比代码匹配错误更难排查。
不要基于想象开发, 要基于原型开发。原型的价值是快速验证想法,帮大家节省时间。
序列化首选明文文本 。诸如二进制、混淆、加密、压缩等等有需要时再加。
编译器永远比你懂微观优化。只能向它不擅长的方向努力。
不要定过大、过远、过细的计划。即使定了也没有用。
至少半数时间将花在集成上。时间,时间,时间总是不够。
与主流意见/方法/风格/习惯相悖时,先检讨自己最可靠。
出现bug主动查,不管是不是你的。这能让你业务能力猛涨、个人形象飙升; 如果你的bug被别人揪出来.....呵呵,那你会很被动~≧﹏≦
不知怎么选技术书时就挑薄的。起码不会太贵,且你能看完。
git是最棒的。简单,可靠,免费。
仅对“可预测的非理性”抛断言。
Log要写时间与分类。并且要能重定向输出。
注释是稍差的文档。更好的是清晰的命名。让代码讲自己的故事。
造轮子是很好的锻炼方法。前提是你见过别的轮子。
code review最好以小组/结对的形式。对业务有一定了解,建议会更有价值(但不绝对)。而且不会成为负担。管理员个人review则很容易成team的瓶颈。
提问前先做调研。问不到点上既被鄙视,又浪费自己的时间。
永远别小看程序媛(╯3╰)!
⑷ 程序员必知,招聘黑话大全!
招聘术语是IT行业面试中常见的语言,以下是一些常见的术语,准备面试的你不可不知。
“base”一词具有双层意义。
“offer”等级分为三类,即“白菜”、“sp”和“ssp”,但现在又增添了更多细分,如“小白菜”、“大白菜”、“小sp”、“大sp”、“ssp”和“超级ssp”或“天才少年”、“新星计划”。
“签字费”是签约奖励,大厂offer通常会有签字费,数额从10000到80000不等。
“校招八股”是对校招科目基础知识的幽默称呼,其中包含一些常考知识点。
“厂、厂、田厂、开水团、虾皮”是行业内对某些特定科目的简称。
“润”表示快跑之意,隐含着“程序和人有一个能跑就行”的理念。
“OC”即“offer call”,意指接到了口头offer,而非正式offer。大厂的口头offer一般没有问题,后续会获得正式录用合同。
“hc”代表“head count”,意指招聘名额。每个部分的名额在招聘开始前已确定,最多可能比hc多一至两个名额。
“开奖”意味着知道了offer等级和具体薪资,是令人兴奋的时刻。正式offer发放前,HR会与你沟通薪资,并提供考虑时间,如果接受,则会收到正式offer。
“泡池子”是指面试结束后与其他通过者一起竞争,从中挑选出最出色的人才,获得offer。通过面试并不等于拿到offer。
“argue”指的是在薪资方面进行谈判,如果你有更满意的offer,则可以利用它与目标公司进行薪资谈判。请注意,这种操作有风险,需谨慎进行。
“OD”也有两个含义,在秋招中使用频率较低。
“总包”即年薪,由base乘以月份加上各种补贴和股票组成,根据公司不同,月份从12个月到16个月不等。
“JD”代表“Job Description”,对于校招生来说,可以参考各大型公司发布的JD,学习交集内容,因为这些技术对每个大厂都非常重要。
⑸ 想要成为一名程序员的话,都必须要掌握哪些技能
编码是软件开发人员的必备方面。在每个团队中,每个开发人员必须被同一技术面试过程雇用。因此,我们可以推断编程器或更少才能具有类似的编程技巧。在这种情况下,一个人如何成为一个好程序员?如果他们做与同龄人的努力做了什么,他们可以做些什么?如果你正在考虑这个问题,证明你已经超过了他人的团队,你知道你想在专业领域拥有长期的发展,并编程效率不好。成为一个优秀的软件开发人员必须拥有的技能。您可以编写一个干净整洁的代码来确定您是否是优秀软件开发人员的标准之一。通过查看代码结构,人们可以轻松判断您是一个能力的程序员。
只要有足够的时间,大多数开发人员都可以完成交付,但不幸的是,在软件行业中,时间是最有价值的东西,如果你公司在一个激烈的市场环境中,如果公司不能先进入市场或者与竞争对手同时进入市场,它将失去市场份额,这是至关重要的。因此,软件开发人员需要有效地管理他们的时间。为此,您需要知道如何准确评估您的时间效率。当你第一次时,你会在评估中犯错误,但它是正常的,每个人都会产生类似的错误,但聪明的开发人员应该能够来自他们。课程是学习和改进的。软件开发专业是激烈的竞争。开发人员的熟练程度可能有所不同,但每个软件开发人员都知道如何以一种或多种编程语言编写代码。在软件行业中,依靠编码技能来实现指数增长是不够的。不要让你的职业生长在几年内。在您职业生涯的每个阶段,实现您想要的目标,实现上面提到的七种技能,成为一个优秀的软件开发人员。