2022.11月代码大全阅读笔记2

第十八章阅读笔记

表驱动法是一种编程模式(scheme)---从表里面查找信息而不使用逻辑语句(if和 case)。

 

事实上,凡是能通过逻辑语句来选择的事物,都可以通过查表来选择。

对简单的情况而言,使用逻辑语句更为容易和直白。但随着逻辑链的越来越复杂,查表法也就愈发显得更具吸引力。

18.1 表驱动法使用总则

        在适当的环境下,采用表驱动法,所生成的代码会比复杂的逻辑代码更简单、更容易修改,而且效率更高。另一方面,如果用一个查询表(lookup table),就可以把每一个字符的类型保存在一个用字符编码访问的数组里。

18.1.1 使用表驱动法的两个问题

在使用表驱动法的时候,必须要解决两个问题:

 

     1、首先,你必须要回答怎样从表中查询条目的问题。你可以用一些数据来直接访问表。比如说,如果你希望把数据按月进行分类,那么创建一个月份表是非常直截了当的。你可以用一个下标从1到12的数组实现它。

        另一些数据可能很难直接用于查表。例如,假设你希望按照社会安全号码做数据分类,那么除非你可以承受在表里面存放 999-99-9999 条记录,否则就不能用社会安全号码直接查表。你会被迫采用一种更为复杂的方法。下面是从表里面查询记录的方法列表:

 

直接访问(Direct access)

索引访问 (Indexed access)

阶梯访问(Stair-step access)

本章后面部分将就这其中的每一种访问方法展开详细讨论。

     2、在使用表驱动法的时候,需要解决的第二个问题是,你应该在表里面存些什么。有的时候,表查询出来的结果是数据。如果你遇到的是这种情况,那么就可以把这些数据保存到表里面。

在另外一些情况下,表查询出来的结果是动作(action)。在这种情况下,你可以保存一个描述该动作的代码,或者,在有些语言里,你可以保存对实现该动作的子程序的引用。

        无论是哪一种情况,表都会变得更为复杂。

       表提供了一种复杂的逻辑和继承结构的替换方案。如果你发现自己对某个应用程序的逻辑或者继承树关系感到困惑,那么问问自己它是否可以通过一个查询表来加以优化

       使用表的两大关键决策:1、如何访问表;2、表中存放什么

 

18.2 直接访问表

通过数组这样的直接访问方式访问表项。如:用数组获取12个月各有几天,或用多重数组获取各种情况下医保的保费。

用于表示太过复杂以至于无法用代码计算(如保费),或者完全没什么内在逻辑的数据(如各个月各有几天(反正我觉得没逻辑))。

书中给出了一个非常强大的例子。有一个信息流,有20种可能的信息,各自有对应的id;如果通过if-else判断代码会非常恐怖,就算用类封装起来内部也还是有恐怖的if-else语句。然而如果通过查表可以轻松解决,而且将各种信息体现为数据而非硬编码,更加易于维护。

posted @   -她的梦-  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
  1. 1 碧天伴走 MyGO!!!!!
  2. 2 影色舞 MyGO!!!!!
  3. 3 詩超絆 MyGO!!!!!
  4. 4 迷路日々 MyGO!!!!!
  5. 5 歌いましょう鳴らしましょう MyGO!!!!!
  6. 6 壱雫空 MyGO!!!!!
碧天伴走 - MyGO!!!!!
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 藤原優樹

作曲 : 木下龍平

编曲 : 木下龍平

人知れず

肩落としてる君がいるのに

碧すぎてる空ばかりが眩しい

僕はどんな言葉を君に

言えばいいのか

君に何を

脆くやわい こころで生きる

僕らは 傷つく生き物で

なのに 今日だって

頑張ってる 十分 君はもう

躓いて 転んだって

立ち上がり来たんだ

頑張ってる いつでも

ここに立ってるだけで

必死なんだから

ジタバタで ラクじゃないけれど

迷っても 君と進んでみたいよ

いいかな

誰かには

ちっぽけなものだったとしても

君にとっては

なにより大事なこと

壊さないで 失わないで

守りたいから

となりにいる

「僕なんか」言うのは やめるよ

君にも 言ってほしくないから

だから顔上げて (伝える)

頑張ったよ 昨日の 君だって

思うようにいかない

そんな毎日だって

頑張ったと 知ってる

僕は知ってる だから

こころを隠さないでほしい

らしさなんて

まだわからないままだけど

ぶつかるたび痛んで

でも浮かびあがる輪郭

ああ 見つける

頑張っても ダメだと 思う日も

この手をつなぐから

ぎゅっと 力込めて

頑張ってる ひたすら 息してる

当たり前に過ぎる

一秒なんかないよ

頑張ってる いつでも

ここに立ってるだけで

たたかってるよ

逃げてもいい 道が見えなくても

迷っても 君と走っていたいんだよ

一緒に

点击右上角即可分享
微信分享提示