分类 计算机技能 下的文章

《代码简洁之道》(Clean Code)是由Robert C. Martin所著的一本经典软件工程书籍。这本书通过实际案例和示例,提供了一系列关于如何编写易于理解、易于维护和高质量的代码的指导原则和实践方法。以下是对该书的总结:

1.可读性:代码应该易于阅读和理解。命名清晰、简洁,函数和类应该具有明确的目的和功能。书中提倡采用有意义的命名和注释,通过代码的阅读来传递信息。

2.函数设计:函数应该短小精悍,只做一件事,并且只做好一件事。函数应该具有良好的抽象性和一致性,遵循单一职责原则。书中介绍了如何设计简洁、可测试和可复用的函数。

3.代码组织:代码应该有良好的结构和组织。通过模块化、类的划分和包的设计来实现代码的可扩展性和可维护性。书中强调了模块化设计的重要性,以及如何通过封装和解耦来提高代码的质量。

4.错误处理:正确处理错误和异常是代码质量的重要组成部分。书中提倡使用异常来处理错误情况,而不是返回特定的错误码。此外,还介绍了如何使用异常屏蔽细节,并给出了异常处理的最佳实践。

5.测试和质量保证:书中强调了测试的重要性,并介绍了单元测试、集成测试和持续集成的实践方法。通过编写高质量的测试用例,可以提高代码的可靠性和可维护性。

6.重构:重构是改善代码质量和可读性的关键技术。书中介绍了各种重构技术和模式,例如提炼函数、提取类、简化条件表达式等。通过重构,可以消除重复代码、提高代码的可读性,并减少代码中的坏味道。

7.并发编程:书中也涉及了并发编程的相关内容。并发编程带来了复杂性和潜在的问题,但通过良好的设计和合适的并发控制机制,可以避免并发相关的错误和性能问题。

《代码简洁之道》是一本对于软件开发者来说非常有价值的书籍。它强调了代码质量和可读性的重要性,通过实用的指导原则和实例,帮助读者编写出易于理解、易于维护和高质量的代码。

作为程序员,职业素养是非常重要的,它涉及到你作为一名专业人士所应具备的道德、职业道德和工作态度。以下是一些程序员应该具备的职业素养:

1.专业知识:作为程序员,你应该持续学习和提升自己的专业知识。这意味着你需要了解最新的编程语言、框架和技术趋势,并不断跟进行业的发展。

2.代码质量:编写高质量的代码是程序员的基本素养。你应该注重代码的可读性、可维护性和可扩展性,遵循良好的编程实践和标准,编写清晰、简洁、高效的代码。

3.合作与沟通:程序员通常是团队中的一员,良好的合作和沟通能力是至关重要的。你应该能够与团队成员有效地合作,分享知识、经验和资源,并能够清晰地表达自己的想法和观点。

4.问题解决能力:作为程序员,你将面对各种技术和逻辑问题。你应该具备良好的问题解决能力,能够分析和理解问题,并提供有效的解决方案。这包括独立思考、调试代码、查找文档和寻求帮助等。

5.职业道德:作为一名程序员,你应该遵守职业道德准则。这包括保护用户隐私和数据安全,遵循法律和法规,尊重知识产权,不参与非法活动,以及对项目和客户的机密信息保密等。

6.持续学习:技术行业的发展非常迅速,作为程序员,你应该具备持续学习的精神。不断探索新技术、学习新工具和框架,参加培训和研讨会,与同行交流经验,保持自己的竞争力。

7.项目管理和时间管理:作为程序员,你经常需要同时处理多个项目和任务。你应该具备良好的项目管理和时间管理能力,能够合理安排工作,掌握优先级,保证项目按时交付。

8.责任心:作为程序员,你对自己的工作应该有责任心。你应该对自己的代码质量负责,并能够承担自己的工作结果。

总而言之,程序员的职业素养不仅包括技术能力,还包括道德和职业道德、合作与沟通能力、问题解决能力、职业道德、持续学习、项目管理和时间管理,以及责任心。通过遵循这些职业素养,你可以成为一名优秀的程序员,并在职业生涯中取得成功。

此外,还有一些其他的职业素养也值得注意,例如:

9.团队合作:作为程序员,你很可能是一个团队的一部分。你应该能够与团队成员协作,互相支持和理解,以实现共同的目标。

10.客户服务:如果你的工作涉及与客户或用户直接交互,你需要具备良好的客户服务能力。这包括善于倾听客户需求、及时回应客户问题和反馈,并提供专业的支持和解决方案。

11.文档和注释:良好的文档和注释是优秀程序员的标志之一。你应该编写清晰、详细的文档,解释代码的功能和设计原理,并为代码添加有意义的注释,以便其他人能够理解和维护你的代码。

12.自我管理:作为程序员,你通常需要在工作中具备自律和自我管理的能力。这包括制定合理的工作计划、管理时间和优先级、保持专注和高效,以及平衡工作与生活。

综上所述,程序员的职业素养涉及多个方面,包括专业知识、代码质量、合作与沟通、问题解决能力、职业道德、持续学习、项目管理和时间管理、责任心,以及其他一些能力。通过不断发展和提升这些素养,你可以成为一名出色的程序员,并在职业生涯中获得成功。

最近在使用甲骨文云的免费VPS进行搭建Web服务器,过程也是一波三折,有几个坑,记录一下,希望有遇到相同问题的朋友能避过;

  1. 如果操作系统选择的ubantu,请不要选择最新的22版本,因为22版本在连接的时候会报错,无法连接,请选择20.04,可以正常连接;
  2. 甲骨文云的免费VPS只提供密钥方式连接,所以在创建VPS时,如果本地没有密钥对可用,一定要记住下载他的公钥和私钥,否则以后连接会非常麻烦;
  3. 搭建Web服务器免不了要打开80,443端口,这里需要要VPS的管理界面找到 “主要 VNIC”--“子网:xxx”,点击连接,进入界面,点击“安全列表”,添加入站规则,把80,443都添加进去,如果你觉得到这一步就完事了,那可就错了,你会发现,你的网站依然无法打开,接下来,还需要在ubantu里打开端口,具体命令如下:

    sudo iptables -I INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    sudo iptables -I OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT
    sudo iptables -I INPUT -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    sudo iptables -I OUTPUT -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT
    这样才能打开端口,网站才能正确运行。

最近项目中接了一个第三方的SDK,SDK的提供方为了能让开发人员在xcode模拟器下也可以运行调试,所以在一些framework中包含了x86_64框架,可是如果打iOS包的话,这里可以通过把“Validate Workspace”设置为“YES”来解决打包报错的问题,可以正常出包了。(“Validate Workspace”的设置请参考下图)
2022-10-10T02:48:33.png

但是新的问题出现了,就是在苹果后台上传包里会报错,如下:

Asset validation failed (90087)
Unsupported Architectures. The executable for XXXX.app/Frameworks/AgoraRtcWrapper.framework contains unsupported architectures '[x86_64]'. (ID: 643f96cf-cd6b-4ad6-bc53-ebb77eab54dd)

说这个库里包含了不支持的框架,上传失败,此时我们需要做的是,把这个x86_64的框架从这个framework中删除,再重新打包;

在mac下,我们可以直接使用lipo -info 来查看framework包含哪些框架,例如上面这个

 lipo -info AgoraRtcWrapper.framework/AgoraRtcWrapper

会输出

AgoraRtcWrapper.framework/AgoraRtcWrapper are: armv7 x86_64 arm64 

可以看到确实包含了x86_64框架,那如何删除x86_64框架呢?还是用lipo命令,如下:

lipo -remove x86_64 AgoraRtcWrapper.framework/AipBase -o AgoraRtcWrapper.framework/AipBase

这样就可以把x86_64删除之后,再写回到原来的路径,最后我们再查看一下删除了x86_64的库,如下:

AgoraRtcWrapper.framework/AgoraRtcWrapper are: armv7 arm64

这里只剩下了armv7 arm64了。重新打包,这里已经不需要把“Validate Workspace”设置为“YES”了,打包后,上传,一次通过。

点击ESC进入“正常模式”,然后输入“:”,进入“命令模式”。此时屏幕的下方会出现一个冒号,你可以输入以下命令,并按“ENTER”执行:

:q ,退出(:quit的缩写)

:q!,退出且不保存(:quit!的缩写)

:wq,保存并退出

:wq!,保存并退出即使文件没有写入权限(强制保存退出)

:x,保存并退出(类似:wq,但是只有在有更改的情况下才保存)

:exit,保存并退出(和:x相同)

:qa,退出所有(:quitall的缩写)

:cq,退出且不保存(即便有错误)

你也可以直接在“正常模式”下输入“ZZ”来保存并退出Vim(和:x相同),或者“ZQ”不保存并退出(和:q!相同)注意此处ZZ大写和小写是完全不同的。

Vim还有一个帮助菜单,可以通过“:help”调出来,基本能够解决你的绝大多数问题。

Vim常用命令


1.移动光标

  • j:向下
  • 20j: 向下移动 20 行
  • k:向上
  • h:向左
  • l:向右
  • 0:到行首
  • ^:到行首第一个字符,如果前面有空格的话
  • $:到行尾
  • gg:快速到文件头
  • G:快速到文件尾
  • 50G:跳转到第 50 行

    请不要在插入模式进行光标移动,效率很低下。

2.复制

  • yy:复制一行
  • 8yy:向下复制8行
  • yw:复制光标开始的一个单词
  • y$:复制光标到行尾
  • yfA:复制光标到第一个大写A中间的内容
  • y2fA:复制光标到第二个大写A中间的内容

3.剪切

  • x:向后剪切一个一个字符,如果是在行尾,则为向前剪切
  • 4x:剪切4个
  • xp:非行尾交换两个字符,如从bs变成sb

4.删除

  • dd:删除一行
  • 100dd:删除100行
  • dw:删除一个单词
  • df":删除到出现的第一个双引号
  • d^:删除至行首
删除的内容会放到剪贴板,按p即可粘贴到其他地方。

5.粘贴

  • p:粘贴复制或剪切的内容
  • 5p:将复制或剪切的内容粘贴5次

6.替换和撤销

  • r+<待替换字母>:将游标所在字母替换为指定字母
  • R:连续替换,直到按下Esc
  • cc:替换整行,即删除游标所在行,并进入插入模式
  • cw:替换一个单词,即删除一个单词,并进入插入模式
  • u{n}:撤销一次或n次操作
  • U(大写):撤销当前行的所有修改
  • Ctrl+r:redo,即撤销undo的操作

7.退出编辑器

  • wq:保存当前文件并退出
  • wqa:保存所有文件并退出
  • q!: 不保存,强制退出
  • qa!: 有多个文件被打开,同时退出

以下命令请在命令模式下执行

在普通模式下,输入:即可进入。

调整文本

  • %s/$/sth/ :在行尾追加sth
  • %s/^M//g :替换掉dos换行符,^M使用ctrl+v + Enter即可输入
  • :g/^\s$/d* :删除空行以及只有空格的行
  • %s/#.*//g :删除#之后的字符
没错,这里使用的是正则。
  • ce:使本行文本内容居中
  • ri:使本行文本内容靠右
  • le:使本行文本内容靠左

查找字符串

在普通模式下,按下/直接进入查找,输入相应的字符串按确定即可

  • n:查找下一个匹配
  • N:查找上一个匹配
  • 2n:查找下面第二个匹配