当前位置:首页 > 数码 > 每个开发者都应该把握的七个至关关键的准则 (每个开发者都了不起)

每个开发者都应该把握的七个至关关键的准则 (每个开发者都了不起)

admin7个月前 (05-02)数码52

软件开发是一门复杂的畛域。是什么让高品质的软件与容易出错、充溢失误的软件有所不同?答案通常在开发人员在编写代码时驳回的外围准则中。

编程准则:低劣代码的基石

编程准则是出色软件的基石。这些倡导和最佳通常指点开发人员编写既配置弱小又优雅、易保养和可裁减的代码。

在本文中,咱们深化讨论了每个开发者工具包中都应该有的七个基本编程准则:

1.DRY准则

DRY:不要重复自己—缩小冗余的关键准则。假设你发现自己复制粘贴同一段代码超越两次,如今是思考形象的时刻了。

2.KISS准则

KISS:坚持便捷,愚昧—在你的代码中谋求便捷。例如,假设你写了一个复杂的if-else链,兴许经常使用switch语句或字典会简化和赞美结构:

之前:

functiongetErrorMessage(errorCode){if(errorCode='E001'){return'Invalidinput.';}elseif(errorCode='E002'){return'Connectiontimedout.';}elseif(errorCode='E003'){return'Databaseerror.';}elseif(errorCode='E004'){return'Filenotfound.';}else{return'Unknownerror.';}}

重构后:

constERROR_MESSAGES={'E001':'Invalidinput.','E002':'Connectiontimedout.','E003':'Databaseerror.','E004':'Filenotfound.'};functiongetErrorMessage(errorCode){returnERROR_MESSAGES[errorCode]||'Unknownerror.';}

3.SOLID准则

SOLID不是一个繁多的准则,而是五个设计准则的汇合。虽然它们根植于面向对象编程(OOP),但它们的智慧可以更宽泛地运行。

(1)繁多职责准则(SRP):一个类应该只要一个扭转的理由。这象征着每个类应该只要一个义务或配置,确保更容易保养和在更改环节中缩小反作用。

思考这个例子:

//失误的方法classUserManager{saveUser(user){//保留用户到数据库的逻辑}generateReport(user){//生成用户报告的逻辑}}

更优雅的处置方案是将其拆分为两个各自处置繁多职责的类:

//正确的方法classUserDatabase{save(user){//将用户数据保留到数据库}}classUserReport{generate(user){//为用户生成报告}}

在上方的代码片段中,咱们分担了责任:UserReport处置用户的报告生成,而UserDatabase治理将用户数据保留到数据库。

(2)开闭准则(OCP):软件组件应该对裁减开明,对修正封锁。这准许开发人员在不修正现有代码的状况下增加新配置,促成可重用性并缩小失误。

假定你有一个AreaCalculator类,用于计算矩形的面积。如今,假设咱们增加一个Circle,AreaCalculator将须要修正。

//失误的方法classAreaCalculator{calculateArea(shape){if(shape.type="circle"){return3.14*shape.radius*shape.radius;}elseif(shape.type="square"){returnshape.side*shape.side;}}}

相反,经常使用OCP:咱们从一个基础的Shape类裁减咱们的状态,准许轻松增加新状态而不修正AreaCalculator。

//正确的方法classShape{calculateArea(){}}classCircleextendsShape{constructor(radius){super();this.radius=radius;}calculateArea(){return3.14*this.radius*this.radius;}}classSquareextendsShape{constructor(side){super();this.side=side;}calculateArea(){returnthis.side*this.side;}}

(3)里氏交流准则(LSP):子类应该能够交流其基类而不发生意外。这确保承袭类坚持其父类的属性和行为。

遵照LSP,咱们应该重构设计以确保正确的承袭:

classBird{fly(){//通用航行行为}}classPenguinextendsBird{//企鹅不能飞,所以这个方法不应该在这里}

正确的方法是咱们将状态从基本的Shape类裁减进去,准许轻松增加新的状态而不修正AreaCalculator。

(4)接口隔离准则(ISP):类不应该自愿成功它们不经常使用的接口。相反,接口应该对其目标详细而明晰。

这象征着接口不应该有太多方法,尽量咱们将小接口抽取进去,以便类可以只成功它们须要的接口,就像上方的例子:

//失误的方法interfaceWorker{work();eat();sleep();swim();}//正确的方法interfaceWorker{work();}interfaceEater{eat();}interfaceSwimmer{swim();}

(5)依赖反转准则(DIP):上层模块不应与低层模块纠缠在一同;它们都应依赖于形象。例如在开关和设施的设计中可以找到:

//失误的方法classLightBulb{turnOn(){}turnOff(){}}classSwitch{constructor(bulb){this.bulb=bulb;}operate(){//间接控制灯泡}}

咱们可以重构这样,以便Switch可以对任何成功SwitchableDevice的设施启动操作,而不只仅是LightBulb。

//正确的方法classSwitchableDevice{turnOn(){}turnOff(){}}classBulbextendsSwitchableDevice{//成功turnOn和turnOff方法}classSwitchDIP{constructor(device){this.device=device;}operate(){//控制设施}}

4.YAGNI准则

YAGNI,你不会须要它,正告不要在必要之前增加配置。

例如,假设你正在构建一个博客网站,并思考增加一个基于用户写作的配置来预测用户的心境,但这关于网站反常运转并不是必须的,那么最好将其留在一边,至少如今是这样。

有不用要配置的运行:

classBlog{constructor(posts){this.posts=posts;}addPost(post){this.posts.push(post);}displayPosts(){//显示一切帖子}predictUserMoodBasedOnWritings(post){//预测心情的复杂算法//...return"Hy";//只是一个示例心情}notifyUserAboutMood(mood){//通知逻辑console.log(`Basedonyourwriting,youseemtobe${mood}`);}}

删除不用要配置后:

classBlog{constructor(posts){this.posts=posts;}addPost(post){this.posts.push(post);}displayPosts(){//显示一切帖子}}

5.SoC准则

每个开发者都应该把握的七个至关关键的准则

SoC,或关注点分别,倡导不同的配置区域应由不同且最小堆叠的模块治理。

例如,在一个天气运行程序中,一个模块可以处置数据失掉,另一个可以治理数据存储,另一个则可以控制用户界面。每个都有自己的关注点,与其余模块离开。

//1.数据失掉模块functionfetchWeatherData(city){constapiKey='YOUR_API_KEY';constresponse=fetch(`${city}?apiKey=${apiKey}`);returnresponse.json();}//2.数据存储模块functionstoreWeatherData(data){localStorage.setItem('weatherData',JSON.stringify(data));}//3.用户界面模块functiondisplayWeatherData(data){constweatherBox=document.querySelector('#weather-box');weatherBox.inner=`<h1>${data.city}</h1><p>${data.temperature}°C</p>`;}//在主运行程序函数中组合它们functionweatherApp(city){const>classCustomer{constructor(wter){this.waiter=waiter;}giveOrder(order){console.log("Customer:I'dliketoorder"+order);this.waiter.takeOrder(order);}}classWaiter{constructor(chef){this.chef=chef;}takeOrder(order){console.log('Waiter:Orderreceived-'+order);this.chef.prepareOrder(order);}}classChef{prepareOrder(order){console.log('Chef:Preparing'+order);//Logictopreparethefood...}}

7.COI准则

组合优于承袭准则(COI)倡导经常使用组合(将便捷对象组合以创立更复杂的对象)而不是类承袭。

构想一下你有一个类Bird和一个类Airplane。它们都能飞,但有承袭相关并不正当。相反,你可以有一个CanFly类,并将你的Bird和Airplane类与它组合。

//失误的方法:承袭classCanFly{fly(){console.log(this.constructor.name+'isflying!');}}classBirdInheritextendsCanFly{}classAirplaneInheritextendsCanFly{}

经过以下组合方法,你可以轻松地向BirdCompose或AirplaneCompose增加或删除配置,而无需启动结构更改或增加不用要的冗余,强调灵敏性。

//正确的方法:组合classCanFlyComposition{fly(){console.log('Flyinginthesky!');}}classBirdCompose{constructor(){this.flyingCapability=newCanFlyComposition();}fly(){this.flyingCapability.fly();}}classAirplaneCompose{constructor(){this.flyingCapability=newCanFlyComposition();}fly(){this.flyingCapability.fly();}}

如何确定自己是否适合做程序员?

syuanlei1987

·努力成为无所不知的最佳答题者

专注于

一份工作是否适合你至少有三个标准:你擅长什么,你喜欢什么,什么对你最有价值(也能赚钱)。从程序员职业的角度来看,有很多标准来判断一个人是否适合做程序员。

看看你是否符合以下几个核心标准:

1. 理解能力或自学能力

如果你在成长过程中一直认为没有老师的指导你就无法学习,那么你就不是做程序员的料。如果你只是为了测试而学习一些东西,然后再也不会去看它,那么你也不是程序员的材料。

在编程的过程中,遇到操作系统、IDE、环境、语言等bug,你能不辞辛苦的去解决吗?

2. 逻辑能力

如果你想学习编程,你需要有一定的逻辑能力。那些缺乏逻辑能力的人无法快速找到逻辑漏洞并写出清晰的代码。没有耐心的伴侣会变得越来越烦人。逻辑也决定了程序员天花板的高度。

3.抽象思维

这种能力大致决定了程序员的上限。如果你没有这种能力,你就不能抽象世界上的一切。如果你在学习代码的时候花了超过一天的时间来理解指针,那你就不是程序员的料。(同样,“不适合”意味着你不可能成为一名优秀的程序员,但你可以成为一名优秀的程序员。)

4. 浓度

专注是兴趣的衍生,当你对某件事非常感兴趣时,你就会进步很快。例如,有些人喜欢玩“LOL”或“吃狗”,即使你连续玩几个小时,你仍然可以得到刷新,但也利用他们的业余时间看视频和看人行道。为什么?因为你觉得它很有趣。如果编写代码很有趣,那么专注就不是问题。

5. 想象力和记忆力

记忆并不意味着照相式记忆,它只是意味着你能记住有哪些类,有哪些函数,以及每个函数的一般过程是什么样的。然后,当你走路或乘坐地铁时,你可以运用你的想象力在脑海中重建代码。我听说人们有时可以在梦中编写代码,但我还没有开发出这种技能。当然,这些能力不是必需的。你需要锻炼。

6. 沟通技巧

许多人认为程序员不需要能够沟通,只要他们能写好代码。事实上,唯一不需要沟通技巧的人是砖瓦工人。如果您想成为一名架构师,您至少需要能够清楚地解释您的计划,并更好地传达您的计划。当然,如果你已经是一个伟大的神,你不交流也没关系。桃李不言,下溪不言。你独自编写每个人的代码,你什么都不说,人们就会把你当上帝看待。

事实上,很少有人能做到以上几点。如果他们能做好其中的2-3件事,他们通常“适合”做程序,并在软件行业找到合适的工作。

如何处理好职场人际关系?我该怎么提高自己的社交相处能力呢?

处理好职场人际关系是职业成功的关键之一。 以下是一些建议,可帮助您提高自己的社交相处能力和处理职场人际关系:1. 建立积极的态度:保持积极的心态和乐于助人的态度。 积极的态度可以吸引他人的好感和合作意愿,创造融洽的工作环境。 2. 倾听和尊重:学会倾听他人的观点和意见,并尊重他们的感受和立场。 给予他人关注和尊重的体现,能够建立良好的人际关系,并促进有效的沟通。 3. 有效沟通:学习有效的沟通技巧,包括清晰表达自己的想法和需求,善于提问和倾听,避免冲突和误解。 通过明确和开放的沟通,能够减少误解和不必要的冲突。 4. 掌握人际技巧:学会与不同性格和背景的人相处。 了解他人的需求和动机,善于合作和协调,处理冲突和解决问题。 灵活性和适应性是成功处理人际关系的关键。 5. 建立信任:与同事建立互信关系。 遵守承诺,诚实守信,始终保持透明和一致的行为。 建立信任可以增加合作和协作的机会,并促进良好的人际关系。 6. 高效团队合作:学会与团队合作,并在团队中发挥积极的作用。 尊重他人的贡献,分享资源和信息,共同追求团队目标。 通过团队合作,能够建立强大的人际网络和相互支持的关系。 7. 解决冲突:当遇到冲突时,学会冷静思考和有效解决问题。 采取合适的方式和时机,与相关方进行开放和建设性的对话,寻找共同的解决方案。 处理冲突时,保持冷静和专业,避免情绪化的反应。 8. 提升自我意识:了解自己的情绪、行为和沟通风格。 通过反思和自我观察,认识自己的优势和发展领域,并积极改进和成长。 9. 学习与成长:持续学习和发展自己的社交和人际技能。 参加培训课程、研讨会和工作坊,提升沟通、冲突管理和人际关系管理等方面的知识和技能。 10. 寻求支持和反馈:寻求他人的支持和反馈,包括领导、同事或导师。 他们可以为您提供指导和建议,帮助您发展和改进社交相处能力。 最重要的是,要保持真诚和自然。 发展良好的职场人际关系需要时间和努力,所以要耐心并持续地努力提高自己的社交相处能力。 通过积极的态度、有效的沟通和尊重他人,您将能够建立良好的职场人际关系,提升自己在职场的影响力和成功度。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: 开发者