摘要:作为一个有点追求的程序员,应该每天练习写代码,而夜深人静的时候,似乎比较合适,至少对我来说是这样。
写代码多年,接手过大量别的程序员写的系统。每接手一个系统我都要吐槽一番,代码写的烂,可读性差,不美观;用的语言有问题,不应该用PHP,应该用java或c#。反正任何别人写的系统并且由我接手的我都要批判一番,认为自己总能写的比他们好。
前几天,有个同行朋友在我的微信上留言,问我项目代码里注释写太多会挨打吗?顺手还给我甩了一张截图,上面密密麻麻的全是手工注释。
从事嵌入式开发多年,从事软件开发前后经历了四家公司,有跨国公司外企,有中型私企,有大型的互联网公司,有初创公司,这些都亲身经历过,带给的也是完全不一样的感觉,但就写代码而论,在外企可能对于代码的质量把控更加严格一些,毕竟周围人的技术能力水平相对高一些,大家的编码规范也会更高,所以不同性质的公司对待代码的也不太一样,也不是说所有的大公司程序员写出的代码就一定是最高的,主要还是和开发具体环境有关。
首先,我个人刚开始写代码的时候,非常喜欢写注释,我一般会把代码思路先用文字表述出来。然后分成 1 2 3 4 每一步要干什么,怎么干。
首先,上手册:自 PHP 5.4.0 起,PHP 实现了一种代码复用的方法,称为 trait。
摘要总结:本文主要讲述了程序员如何避免给自己找麻烦,通过减少代码量来提高代码质量和可维护性。作者强调了代码只是副产物,我们需要多思考,多重构,删除老旧的代码,用更新更少的代码替换,以提升代码质量。
有个朋友说,他十天写了 20000 行代码,当时我的膝盖就直接给它了,怎么会有这么强的选手??!!
这份内容干货满满,仅仅只是看了 slide 就知道是非常有意思的一次演讲了。slide 共有 254 页之多,在「赤乐君」知乎专栏分享内容的基础上,机器之心为大家介绍 NLP 及深度学习研究者的编程指南。
你需要每天写代码吗? 就像运动员每天锻炼一样,每天练习写代码可以成就更优秀的你。 最近我看过的博客,基本上每篇都有提到,“你需要每天写代码”。什么主题不重要,关键是要养成每天写代码的好习惯。写得越多,
在Java并发包中常用的锁(如:ReentrantLock),基本上都是排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时 刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞。读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得 并发性相比一般的排他锁有了很大提升。
Copilot 是 github 出品的一款基于 AI 的编程辅助编程工具,通俗点的说法就是:帮你写代码。
最近写了不少类了,从垃圾代码爬坑,虽然还是很垃圾,但是照葫芦画瓢,有几分神韵。在这里总结一下,写类的经验教训。 第一步 分析: 当拿到一个要求时,要先去考虑怎样一个类到底该实现什么样的功能,有什么样的数据,简而言之,就是分析。该用什么方式组织数据,达到解决一类问题的方式,在分析结束后脑子里会有一个大概的框架,在通过分析后将每个类的应该有的数据,与操作写出来,这个时候不需要写出具体实现方式,而是为后续写类,搭建一个框架,分析时也要注意面向对象封装的特点,一一定要注意数据与操作的分离,这样让每个类成为一种的独立的类型,而不是数据操作混用,每个类都不能独立的解决一些问题,这样的代码复用性差,所以还是按照老师讲的数据类与操作类清晰的分离,到这里一个比较明确的思路就可以的出来。 第二步 补充操作使类完整 这一步,包括代码的实现与调试,之前的时候写代码是一气呵成,那时候还不太明白什么是写一个功能调一个功能,指导有一次通讯录管理系统最后跑不出来,也不报错,但是就是不按自己想法出结果,于是,从头开始往另一个CPP文件里粘代码,一个函数一个函数的粘贴,这样一个函数一个函数的调试,于是300行的代码硬硬的调了快两个小时,才明白什么是写一个功能调试一个,不是写完一整个程序调试一遍,也不是写完一个类调一遍,这个功能就是对每一个要起到作用而函数,进行测试,可想而知要是1000行的代码出现了问题,不是从头开始写一个,调一个的话,要是找错误的话,跟直接从新写没有太大区别。所以写一个调试一个,看似增加了写代码的时间,实际上是减少了调试代码的时间,更重要的是降低调试代码的复杂度。 应该具备的素质 面向对象编程,要注意封装继承多态,写出更具有通用性的代码,提高代码的复用率,就是减少重复代码的出现次数,比如图书馆管理系统的管理端与用户端有着同样的查询操作,如果不采用继承的方式写,就会少写很多代码,既可以减少代码的长度,又能使类更加明了,但是一般说上来就知道那两个类可以继承,是不太现实的,一般是当第一部完成后,发现两个类的功能有大量重叠,抽出重叠部分,形成一个基类,再由两个类继承。多态是为了提高类的封装性,将一个接口通过动态的方式确定调用具体哪一项操作,应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。 所以熟练的使用虚函数使提高类的封装性的方法。 我认为就是根据不同的情况调用指向不同派生类的指针而使得可以调用不同的参数,可以通过键盘上敲的值动态的确定要调用那个函数。 最后一点 作为一名程序monkey,写出的代码不只是给自己的看的,应该让别人也看懂,吃过的亏是写代码是每个成员变量是a,b,c不是上学期那么短的代码,数据少,现在数据多,所以命名一定有意义,一来是让别人看的懂,其次让自己调代码时也更加方便,然后是,写代码的时候,一定要类内声明,类外定义,写一摊,不能明确看出到底有哪些函数,有哪些功能,再根据函数、功能去找代码,这样更方便,与明了。 虽然,我们也没学什么设计模式,软件工程什么什么的,但是很多老师讲了的知识就一定要会。上学期的时候Fls不让写注释,上学期代码短,一眼就看出来了,这学期开始时不写注释,写出的代码不尽人意,因为思路突然就中断了,这是干嘛的,什么作用什么功能?所以我觉得适当的明了的注释应该是可以有的,目前水平还很低,这是自己接触的第一门语言,估计这应该是大学三年用的比较多的语言了,所以还要继续努力。
相传,江湖中,有三种程序员。 他们写代码的追求各不相同。 优秀程序员写代码追求让别人看懂,普通程序员追求让自己看懂,蛇皮程序员则追求让编译器能看懂。 半年以后,他们各自看当初自己写的代码,优秀程序员不知道是自己写的但很容易看懂,普通程序员知道是自己写的但是不太容易看懂,蛇皮程序员埋头看了半天后拍着桌子吼到:“这是哪个SB写的程序!” 笑话很好玩,但在这残酷的现实中,绝大多数人都是“蛇皮程序员”。 同为程序员,为什么有的人是优秀程序员,有的人却只能蛇皮的连自己写的代码都看不懂呢? 这就引出了一个关系程序
在《程序员软技能》[1]中,提到过一种思维,要把自己当成一家企业,而就职公司是我们的客户。
没错,我,本人,就是那种卷心菜,就是那种想卷但卷不过别人的, 我每天吭哧吭哧写代码,写到办公区里空荡荡地只剩下我一个人,但我们组里,就我需求写得最慢,bug写得最多,我弟常问我:“哥,别的同事加班都没你多你绩效一定不错吧?”
代码只是编程思想的一种具体展示形式,程序员写代码有几个禁忌,不能写没有中心思想的代码,很多程序员写代码都是凭着感觉走,写到哪算哪,特别是初学者写代码的时候,不讲究策略觉得一边想着一边写着是一件特别有意思的事情,任何都需要有编程的指导思想指引,不能跟着感觉走,编程是一种理性行为不是肆意挥洒,优秀的程序代码一定是经过精心设计的,程序代码的调试不是推倒重来,而是在有中心的基础上进行修复。
IDEA相对于eclipse来说最大的优点就是它比eclipse聪明。聪明到什么程度呢?我们先来看几个简单的例子。
距离上一次给小伙伴们汇报简易版的“Spring Boot”的完成情况已经有半个月了。时间过得是真特么快啊!
当我们使用 Selenium 开发爬虫的时候,使用 Jupyter 写代码会比用 PyCharm 写代码更方便。如果使用 PyCharm 写代码并直接运行,当某一行报错的时候,整个程序就挂了,改了代码以后必须完全从头开始,这样会非常浪费时间。但如果使用 Jupyter 写代码,那么我们只需要重试出问题的这一行代码就可以了,不需要把整个程序再重启一次。
编码是程序员最重要的工作,每个程序员都希望自己可以写出优雅,高性能,高质量的代码,对于大师级别的程序员,他们的写的代码就和艺术品一样,你会忍不住发出惊叹,他们怎么可以创造出如此惊艳的作品出来。
常常在问自己这样一个问题,也听到很多人都说“先实现功能”,也许在某种意义上不得不如此,但我认为这不是真正意义上的软件开发,实现功能重要,软件的维护更重要,如果以后要实现一个新的功能我们是重新写一遍快还是在原来的基础上扩展快?如果有人要用这个软件是看源码快还是看设计书快? 大家或许要说了:别人写的代码要我来修改还不如我自己重新写,看哪些无用的设计书还不如直接看源码。问题的根源在哪里呢? 别人的代码(其实就是你写的代码,我来看)为什么很难修改?因为看不懂,代码不规范,没有详细的注释说明,设计不合理无法扩
StampedLock是 JDK1.8 版本中在 J.U.C 并发包里新增的一个锁,StampedLock是对读写锁ReentrantReadWriteLock的增强,优化了读锁、写锁的访问,更细粒度控制并发。这篇文章就来介绍一下StampedLock,分为如下几个问题:
在python交互式解释器里,你可以写简单的代码,尽管复杂的代码你也可以写,但不建议那样做。我们写一些简单的代码,有时仅仅是为了验证一些想法,想立即知道是否可行,或者是在初学阶段,希望快速的验证自己所学习的知识,都可以在python交互式解释器里编写和执行代码。
萧箫 发自 凹非寺 量子位 | 公众号 QbitAI ChatGPT知道自己写的代码有漏洞,但它不说! 来自加拿大的一项最新研究发现,ChatGPT生成的代码中,有不少都存在安全漏洞。 然而在被要求评估自己代码的安全性时,ChatGPT却很快发现了这些代码中的漏洞,并给出了一些解决方案和建议。 这意味着它并不知道自己生成了糟糕的代码,但却查得出它写的代码有漏洞,也有能力修复这些漏洞。 而在另一篇来自斯坦福的论文中,研究人员测试了另一位著名AI程序员Copilot,也发现了类似的问题。 所以,用AI生成代码
写代码的过程中,难免会出现各种各样的 Bug。但实际上,很多 Bug 产生的原因是类似的。于是我总结了一些自己学编程时写 Bug 的诱因,希望大家引以为戒,在以后写代码的时候能更多注意。
是不是已经按捺不住想要动手编写一个小系统的心情了?先不要着急,在动手之前,我送你3个锦囊(现在就可以打开看的那种)——单元测试、异常处理和日志。
转眼间已经毕业3年了,从13年工作算起也算是工作5年多了,期间做过android、 flex 、c#、前端偏js、Java、半运维。最终还是选择了曾经最讨厌的Java。 在现在这份工作之前,给别人的感觉我就是跳槽频繁。说实话,如果一份工作在薪水和体现你能力之间有个相对权衡的点,相信都不会想着跳槽的,毕竟一个新的环境一个新的坑,你能不能像在之前公司被器重都是未知数。 在此写下本人的一些感触。
我是一个倾向于生活在规则下的人。 现在,这些规则大部分是我本人为自己设立的-但它们依然是规则。 我发现为自己创建规则可以让我过得更好,因为这样做可以提前决定一些事情,而不是要在匆忙中做出所有的决定。 我今天早上应该去健身房吗? 我的规则告诉我说我要在周三前往健身房,今天是周三,因此我要去健身房,就这么办了! 这周,当我正在思考那些对我施加有影响的规则时,我想到了去制定一系列软件开发者都应该遵守的规则,我认为这可能是一个好主意。 现在,我承认,这里面的大多数规则比那些“指导方针”要求的要多,它们是: 1、技术
Java 并发包中的读写锁及其实现分析 1. 前言 在Java并发包中常用的锁(如:ReentrantLock),基本上都是排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时 刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞。读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得 并发性相比一般的排他锁有了很大提升。 除了保证写操作对读操作的可见性以及并发性的提升之外,读写锁能够简化读写交互场景的编程方式。假设在程序中定义一个共享的数据结构用作缓存,它大
很多没有实际工作过的同学,可能都会认为程序员的工作只有写代码 + 和产品经理 “拉扯”,也会习惯性地用代码量来评价一个程序员的工作强度和等级,以为码字如飞、每月能写个几万行代码的程序员就是大佬。
如果你是一个拥有十年经验的北京程序员,我大致能知道你写的工作经历。十年前,你在二环写代码,八年前,你在三环写代码,五年前你在四环知春路附近写代码,两年前(或者五六年前)你己经移师西二旗软件园了,或者是在这二十多公里外的昌平软件园。 以秦岭淮河为界,把中国的互联网版图画分为南北二派,目前,北派压倒性的优势领先南派,这优势主要在码农的数量。北派,主要是北京,可能是世界上码 农密度最高的城市 ,没有之一。北派的互联网公司,多是码农创业,比如360的周鸿祎,今日头条的张一鸣,百度的李彥宏,还有近几年来名头最响的雷军
Lock接口下的子类存在 ReentrantLock子类,该子类是一个线程同步处理类;ReentrantLock类的介绍详见XXX;
最近在带大家做新项目,欢迎参与 大家好,我是鲏。 很多初入职场的程序员朋友,可能很长一段时间都在重复下面的过程: 组长分配一个任务 --> 你埋头写代码 --> 收到 Bug 反馈 --> 你埋头改代码 ... 有位刚入职的学弟就是这样,虽然每次的工作都能按时完成,但总感觉自己是一个 “写代码的机器”(听别人的,负责把需求翻译成代码),也没有什么成长。 快别这样了!写代码真的只是唯一能做的吗? 需求的背景你清楚了么?需求方是谁?为什么提这个需求? 为什么要这么做需求,还有其他的方法么? 这条需求背后是关于哪
最近AllenNLP在EMNLP2018上做了一个主题分享,名为“写给NLP研究者的编程指南”(Writing Code for NLP Research)。
在编程的路上,你是不是曾有过这样的经历:虽然学会一门编程语言后会写代码了,但是有时写出的代码可能并没有想象的那么好。比如:
笔者只是抛砖引玉,把三款看到的在本篇简单的介绍。 如果有其他更好的欢迎留言推荐,后续笔者会对这三款做一一的学习。
一、代码阅读的必要性 阅读别人的代码作为开发人员是一件经常要做的事情。一个是学习新的编程语言的时候通过阅读别人的代码是一个最好的学习方法,另外是积累编程经验。如果你有机会阅读一些操作系统的代码会帮助你理解一些基本的原理。还有就是在你作为一个质量保证人员或一个小领导的时候如果你要做白盒测试的时候没有阅读代码的能力是不能完成相应的任务。最后一个就是如果你中途接手一个项目的时候或给一个项目做售后服务的时候是要有阅读代码的能力的。 二、收集所有可能收集的材料 阅读代码要做的第一件事情是收集所有和项目相关的资料。比
编程江湖中一直盛传着一个段子,那就是要问程序员最讨厌哪 4 件事?那必须是:写注释、写文档、别人不写注释、别人不写文档。
遥想我学习写asp代码时,觉得写代码也不难呀,无非就是学学语法规则、库就可以写出来,记得有一次我实习面试的时候是让我在一个下午左右的时间写一个完整的留言板,那也就是刷刷刷就写好了,但随着后来工作,越来越明白高质量的工程代码为什么难写。
解决线程安全问题使用ReentrantLock就可以,但是ReentrantLock是独占锁,某时只有一个线程可以获取该锁,而实际中会有写少读多的场景,显然ReentrantLock满足不了这个需求,所以ReentrantReadWriteLock应运而生。ReentrantReadWriteLock采用读写分离的策略,允许多个线程可以同时获取读锁。
每种编程语言、每个框架都有自己的一套编码规范和编码最佳实践方式,例如 PEP8 是 Python 语言的编码规范,作为 Python 开发者,每个人至少要将 PEP8 读上三五遍,熟记于心并运用在项目中。
对于程序员来说,都希望代码可以实现一步到位,绕开令人头疼的BUG。但是在程序员的编程生涯中,免不了和BUG打交道。
有一些同学是从其它语言迁移到Python的,所以写Python代码的时候,还带有其它语言的一些语法特征。于是写出来的Python代码包含了大量没什么用的无效代码。我们今天来看看常见的无效代码有哪些。
上一篇文章中,我们已经学习了读/写自旋锁的工作原理和实现方式(基于ARM架构体系)。但是,有一个问题我们不得不考虑,那就是read锁和write锁的优先级问题:它们具有相同的优先级,所以,读操作必须等到写操作完成后才能执行,同样,写操作必须等到读操作完成后才能执行。
肉眼品世界导读: 网络上一直有讨论CTO要不要写代码,定论各种各样;没有做过CTO的同学也对CTO的岗位充满了好奇和向往,作为亲身经历,谈谈自己的感受:不爱写代码的CTO才是好的CTO 读懂中国互联网,读懂商业模式请关注微信公众号“肉眼品世界”(ID:find_world_fine),深度价值体系传递
StampedLock是并发包里面jdk8版本新增的一个锁,该锁提供了三种模式的读写控制,三种模式分别如下:
Intellij IDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对Intellij IDEA的喜爱,我决定写一个与其相关的专栏或者系列,把一些好用的Intellij IDEA技巧分享给大家。本文是这个系列的第一篇,主要介绍一些你可能不知道的但是又实用的小技巧。
以秦岭淮河为界,把中国的互联网版图画分为南北二派,目前,北派压倒性的优势领先南派,这优势主要在码农的数量。北派,主要是北京,可能是世界上码农密度最高的城市 ,没有之一。北派的互联网公司,多是码农创业,比如360的周鸿祎,今日头条的张一鸣,百度的李彥宏,还有近几年来名头最响的雷军,都写得一手好代码。可以断定,这些人的人生理想可能只是做一个好码农,写一手好代码,没想到。写着写着就做成了行业的老大,或者开创一个新的行业。 这么看来,在北京写代码,是件很有前途的事。写着写着,你就成了求佰君。我说的不是你创作了wps
一般你加入了一个项目组,领你进来的人通常会帮助你熟悉环境,而你可能记得最清楚的便是
领取专属 10元无门槛券
手把手带您无忧上云