《极客时间 - 左耳听风》【文章笔记个人思考】

2024-03-02 01:12

本文主要是介绍《极客时间 - 左耳听风》【文章笔记个人思考】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《极客时间 - 左耳听风》原文链接:https://time.geekbang.org/column/intro/100002201?tab=catalog

  • 10 | 如何成为一个大家愿意追随的Leader?
  • 11 | 程序中的错误处理:错误返回码和异常捕捉

10 | 如何成为一个大家愿意追随的Leader?

这里的Leader是在技术上取得优势,而不是行政上的职位,不是一种职称而是领头羊。

Leader:

  1. 讨论工作细节,关注工作重点,制定工作计划,解决细节难题。
  2. 深入技术细节,从技术上找到治标又治本的技术方案或管理方法。
  3. 注重技术发展。
  4. 沟通协作。

TUTU

如何成为Leader?

  1. 帮人解决问题。
  2. 被人依赖。

技术领导力是成为一个Leader的关键因素。

人总是需要有不同的经历,优秀的人更是如此。

Always Be Coding 终身写代码才会有更多实践经验,才能明白什么是最好的实践,才能明白一个技术方案的优缺点和实现复杂度。很多时候项目经理或产品经理一个自己认为很简单的需求,在技术上实现的时候可能会遇到很多坑。

保持积极、正面、热情的生活方式。

正视错误,正视问题,正视不足,不怕困难,迎难而上,在反思和总结中得到更好的解决方案。

互相学习,互相提高,互相成就。

11 | 程序中的错误处理:错误返回码和异常捕捉

确实,任何一个稳定的系统中,都会用大量代码处理错误。

strtol() 函数使用 返回值 +错误码的形式。
存在两个问题:

  1. 程序员一不小心就会忘记返回值的检查,从而造成代码的 Bug,这经常会遇到。
  2. 函数接口非常不纯洁,正常值和错误值混淆在一起,导致语义有问题。

Windows 的系统调用开始使用 HRESULT:返回值只用来做函数调用的成功或失败,input 和 output 通过函数参数来完成。
存在问题:

  1. 函数接口变的复杂。
  2. 函数返回成功或失败可能被认为忽略。

Go语言很多函数通过多返回值来解决:返回 result, err 两个值。(个人觉得放在同样的返回位置不清晰,不如用返回值只用来做函数调用的成功或失败,input 和 output 通过函数参数来完成。)

  1. 参数都是入参,结果信息和错误信息分离,函数接口语义会更加清晰。
  2. Go 语言中的错误参数如果要忽略,需要显式地忽略,用 _ 这样的变量来忽略;(为什么要忽略,如何忽略,TUCODE)
  3. 返回的 error 是个接口(其中只有一个方法 Error(),返回一个 string ),所以你可以扩展自定义的错误处理。(TUCODE)
  4. 函数会返回多种不同类型的 error 通过 switch case 处理。

资源清理:

  1. 通过C++ 的 RAII 机制实现。
  2. Go语言中的 defer 关键字可以做到同样的效果。
  3. C语言通过 goto 语句实现,代码中间不能 return 否则会导致内存泄漏。

异常捕获处理:try-catch

  1. 正常的代码、错误处理的代码、资源清理的代码分开,提高了代码的可读性。
  2. 函数接口在 input(参数)和 output(返回值)以及错误处理的语义是比较清楚的。
  3. 异常不能被忽略(如果要忽略也需要 catch 住,这是显式忽略)。(TOTHINK)
  4. 在面向对象的语言中(如 Java),异常是个对象,所以,可以实现多态式的 catch。(TOCODE)

致命问题:在异步运行的世界里的问题。try 语句块里的函数运行在另外一个线程中,其中抛出的异常无法在调用者的这个线程中被捕捉。

资源错误(文件资源,内存资源):日志 + 程序退出。 根据系统底层接口处理。
业务逻辑代码错误:日志 + 报警。捕获异常。
用户的错误:向用户端报错。返回错误码。
运行环境错误:日志 + 报警。重试或妥协(降低性能等),保障环境可用。捕获异常。

底层系统的资源错误,提供什么错误处理方式就用什么错误处理方式,尤其是一些系统库没的选择。

其他情况:

  1. 在 C++ 重载操作符的情况下,你就很难使用错误返回码,只能抛异常;
  2. 异常捕捉只能在同步的情况下使用,在异步模式下,抛异常这事就不行了,需要通过检查子进程退出码或是回调函数来解决;
  3. 在分布式的情况下,调用远程服务只能看错误返回码,比如 HTTP 的返回码。

《代码大全2》里有部分是专门讲这个的,很详细。

这篇关于《极客时间 - 左耳听风》【文章笔记个人思考】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/764461

相关文章

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

对postgresql日期和时间的比较

《对postgresql日期和时间的比较》文章介绍了在数据库中处理日期和时间类型时的一些注意事项,包括如何将字符串转换为日期或时间类型,以及在比较时自动转换的情况,作者建议在使用数据库时,根据具体情况... 目录PostgreSQL日期和时间比较DB里保存到时分秒,需要和年月日比较db里存储date或者ti