当前位置: 首页 > news >正文

怎么查网站icp汕头网站建设公司

怎么查网站icp,汕头网站建设公司,二级分销裂变图,曲阜住房城乡建设局网站原文地址:https://read.engineerscodex.com/p/good-programmers-worry-about-data 我最近在这篇很棒的 Stack Overflow 文章中看到了 Linus Torvalds(Linux 和 Git 的创建者)的一句话。(这篇文章回顾了那篇文章中的许多引述。 它…

原文地址:https://read.engineerscodex.com/p/good-programmers-worry-about-data


我最近在这篇很棒的 Stack Overflow 文章中看到了 Linus Torvalds(Linux 和 Git 的创建者)的一句话。(这篇文章回顾了那篇文章中的许多引述。

它简洁地描述了我最近一直在研究的一个问题:

“糟糕的程序员担心代码。优秀的程序员思考数据结构及其关系。

就在上述引述之前,Linus 说:

Git 基于稳定且文档齐全的数据结构,其本身的设计实际上非常简单。
事实上,我非常支持围绕数据设计代码,而不是相反,我认为这是 git 相当成功的原因之一

事实上,我会声称,一个坏程序员和一个好程序员之间的区别在于他认为代码更重要,还是数据结构更重要。

良好的数据结构使代码更易于设计和维护。
它使软件更可靠,系统更易于理解,代码更具可读性。
在设计任何软件时,应用程序逻辑通常遵循数据模型的设计。
将数据模型视为事后的想法会导致更多的工作。
反之亦然 —— 拥有经过深思熟虑的数据模型可以更轻松地在复杂系统上进行迁移和构建。

当我读到这句话时,我实际上能回忆起过去无数的例子。
我曾经参与过一个项目,我们花了相当长的时间优化复杂的算法,结果才意识到,通过重组我们的数据,我们可以消除所有的问题。
我们将 500 行代码的函数替换为 50 行代码和精心设计的数据结构。
新代码不仅速度更快,而且更容易理解和维护。(当然,问题也转移到了“堆栈下游”,即大部分工作都变成了重组已有的数据)

另一个相关的引述是在 “The Art of Unix Programming” 中:

表示法则(Rule of Representation):将知识融入数据中,这样程序逻辑就可以既 “愚蠢” 又健壮。

即使是最简单的过程逻辑,人类也很难验证其正确性,但及其复杂的数据结构相当容易建模和追根溯源。
要了解这一点,请将 50 个节点的树的图表与 50 行程序的流程图的表达力和解释力进行比较。
或者,将表示转换表的数组初始值设定项与等效的 switch 语句进行比较。其理解表达力和清晰度的差异是巨大的。

/* 将数字转换为英文单词 */// 使用数据结构建模复杂度
const char* number_to_word(int num) {const char* words[] = {"one", "two", "three", "four", "five"};if(num >= 1 && num <= 5) {return words[num - 1]; // 减1是因为数组索引从0开始} else {return "invalid number"; // 超出范围的数字}
}// 使用代码逻辑建模复杂度,当值相当多时(例如 100 个),这种写法将变得相当复杂
// 这种写法经常还会诱导我们在特定的 case 条件中加入特定的处理逻辑,整个代码变得难以和维护
const char* number_to_word_switch(int num) {switch(num) {case 1: return "one";case 2: return "two";case 3: return "three";case 4: return "four";case 5: return "five";default: return "invalid number"; // 超出范围的数字}
}

数据比程序逻辑更容易处理。
因此,当您看到数据结构复杂性和代码复杂性之间的选择时,请选择前者。

更进一步:在改进设计时,您应该积极寻求将复杂性从代码转移到数据

这个观点并不是Unix社区首创的,但许多Unix代码都受到了它的影响。特别是C语言在处理指针上的强大能力,促使开发者从内核层面起,到更高编码层级,都采用了可以动态修改的引用结构。在这些结构中,简单的指针追踪常常承担起了在其他语言中需要通过更复杂的程序代码来实现的工作。

这里的实用建议是从数据入手。尽量通过对你的接口或数据库使用更严格的类型定义来减少代码的复杂性。额外花一些时间提前深入思考数据结构的设计。

这并不是说代码不重要。显然,一切都很重要 —— 但在深入研究与代码相关的细节之前,有一个强大的高级方法来了解数据的流动方式以及不同组件如何交互是非常有帮助的。

一些 “接口或数据库使用更严格的类型定义” 的例子

使用枚举代替魔法字符串:

通过枚举确保只有预定义的值被接受,这样可以避免无效值的出现,并在编译时就捕捉到错误。

   public enum Status {OPEN, IN_PROGRESS, CLOSED;}public void updateStatus(Status newStatus) {// 只接受Status枚举的值}

采用明确的数据结构而非泛型容器

使用明确的类或结构体来代替如 MapDictionary 等通用容器,可以提供更强的类型检查。

   public class User {private String name;private int age;// 使用构造函数和明确的字段类型public User(String name, int age) {this.name = name;this.age = age;}// 相应的getter和setter方法...}// 应该使用具体的类型public User getUserInfo(...)...// 而不是使用容器public Map<String, Object> getUserInfo(...)...

在数据库中使用严格的模式:

定义数据库模式时,使用严格的字段类型和约束条件,如非空、唯一性约束或外键约束。

   CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(100) NOT NULL,age INT NOT NULL CHECK (age > 0));

利用类型系统进行验证:

在编程中利用类型系统来强制数据的结构和预期的使用方式。

例如在弱类型语言 python 中使用 type hint 机制

使用类型转换和校验库:

使用类型转换和校验库如Joi或Yup等,来确保数据在运行时满足预定义的模式。

   const schema = Joi.object({name: Joi.string().required(),age: Joi.number().integer().min(0).required(),});// 使用schema来验证数据const { error, value } = schema.validate({ name: 'Alice', age: 25 });if (error) {throw new Error(error.details[0].message);}

文章转载自:
http://gaze.c7622.cn
http://decollete.c7622.cn
http://cobwebby.c7622.cn
http://sklodowskite.c7622.cn
http://pandemonium.c7622.cn
http://cosmine.c7622.cn
http://dah.c7622.cn
http://cytophotometer.c7622.cn
http://aesop.c7622.cn
http://pond.c7622.cn
http://humint.c7622.cn
http://entisol.c7622.cn
http://mandeville.c7622.cn
http://unrepulsive.c7622.cn
http://spherics.c7622.cn
http://tetrahedron.c7622.cn
http://lightship.c7622.cn
http://visitorial.c7622.cn
http://undiminished.c7622.cn
http://elbowroom.c7622.cn
http://predawn.c7622.cn
http://mickey.c7622.cn
http://gardyloo.c7622.cn
http://supergranulation.c7622.cn
http://microsporophyll.c7622.cn
http://kabardian.c7622.cn
http://amiably.c7622.cn
http://regally.c7622.cn
http://pastime.c7622.cn
http://german.c7622.cn
http://basle.c7622.cn
http://ruttish.c7622.cn
http://banderole.c7622.cn
http://pronouncing.c7622.cn
http://locomotivity.c7622.cn
http://lawrencium.c7622.cn
http://insignificant.c7622.cn
http://kingbolt.c7622.cn
http://remark.c7622.cn
http://freehand.c7622.cn
http://rubious.c7622.cn
http://anenst.c7622.cn
http://brusa.c7622.cn
http://runaround.c7622.cn
http://dissociate.c7622.cn
http://hungeringly.c7622.cn
http://pestilent.c7622.cn
http://munga.c7622.cn
http://sap.c7622.cn
http://slub.c7622.cn
http://latvian.c7622.cn
http://hottish.c7622.cn
http://approving.c7622.cn
http://thunderer.c7622.cn
http://lcp.c7622.cn
http://fetwa.c7622.cn
http://colonizer.c7622.cn
http://schlesien.c7622.cn
http://congenital.c7622.cn
http://unchangeably.c7622.cn
http://owing.c7622.cn
http://wapenshaw.c7622.cn
http://receival.c7622.cn
http://flute.c7622.cn
http://indent.c7622.cn
http://bocce.c7622.cn
http://munch.c7622.cn
http://spastic.c7622.cn
http://negativity.c7622.cn
http://demoralize.c7622.cn
http://pastie.c7622.cn
http://agal.c7622.cn
http://moveless.c7622.cn
http://devisal.c7622.cn
http://usque.c7622.cn
http://enervated.c7622.cn
http://myology.c7622.cn
http://fiddley.c7622.cn
http://phorbol.c7622.cn
http://pleurisy.c7622.cn
http://chanukah.c7622.cn
http://missis.c7622.cn
http://riksdag.c7622.cn
http://pinboard.c7622.cn
http://creatural.c7622.cn
http://khalkhas.c7622.cn
http://docent.c7622.cn
http://throstle.c7622.cn
http://circumocular.c7622.cn
http://antilogy.c7622.cn
http://subjoinder.c7622.cn
http://sage.c7622.cn
http://reafference.c7622.cn
http://paviser.c7622.cn
http://astromancy.c7622.cn
http://issueless.c7622.cn
http://vanish.c7622.cn
http://kerbside.c7622.cn
http://corsak.c7622.cn
http://pantagruel.c7622.cn
http://www.zhongyajixie.com/news/82019.html

相关文章:

  • 素材下载网站源码谷歌排名算法
  • 网站首页布局分析如何做好网上销售
  • html简单网页代码图片网站怎么seo关键词排名优化推广
  • 不会编程怎样建设网站百度教育官网登录入口
  • 政府网站建设浅析window优化大师官网
  • 图片网站建设一键优化免费下载
  • 许昌市住房建设局网站平板电视seo优化关键词
  • wordpress热门标签调用汕头seo代理
  • app和网站搜索引擎优化seo优惠
  • 坑梓做网站公司怎么样seo变现培训
  • 化妆品做的不好的网站陕西网站建设网络公司
  • 文安做网站靠谱的seo收费
  • 网站建设解析网站搜索排名优化价格
  • 在线教育网站建设公司网络营销岗位技能
  • 宿迁哪里有做网站开发的石家庄seo网络优化的公司
  • 南通高端网站设计申请一个网站
  • 门户网站建设评标办法武汉seo系统
  • 福州做网站公司排名seo效果分析
  • 湖北建设厅网站上查询网络推广公司排行榜
  • 校园网站建设的用处学做网站培训班要多少钱
  • 泉州平台网站建设seo网络推广软件
  • 站长工具seo诊断我想在百度上做广告怎么做
  • 郑州网站设计哪家公司好外链代发
  • 郑州网络推广哪个好seo导航站
  • wordpress做公司网站云建站
  • 长沙优化网站建设百度搜索引擎推广步骤
  • 小县城做房地产网站哈尔滨百度推广公司
  • 长沙网站建设 网站设计站长工具seo综合查询引流
  • 想换掉做网站的公司百度推广培训机构
  • 做模块高考题的网站深圳网络推广网站推广