<编程珠玑>笔记 四条原则

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了<编程珠玑>笔记 四条原则相关的知识,希望对你有一定的参考价值。

  第三章作者重在阐述一种编程观念, 即 “data does indeed strcture programs”

  这一章貌似没什么干货,只好把作者的几个例子贴出来,反复看看了。

1  A survey program

  Total US Citi Perm Visa Temp Visa Male Female
African American 1289 1239 17 2 684 593
Mexican American 675 577 80 11 448 219
Native American 198 182 5 3 132 64
Spanish American 411 223 152 20 224 179
Asian American 519 312 152 41 247 270
Caucasian 16272 15663 355 33 9367 6836
Other 225 123 78 19 129 92
Totals 19589 18319 839 129 11231 8253

1) the numbers should be stored as an array

技术分享
ethnicgroup = entry[0]
campus = entry[1]
if entry[2] == refused
    declined[ethnicgroup, 2]++
else
    j = 1 + entry[2]
    count[campus, ethnicgroup, j]++
if entry[3] == refused
    declined[ethnicgroup, 3]++
else
     j = 4 + entry[3]
     count[campus, ethnicgroup, j]++
View Code
   replace above lines with array offset containing 0, 0, 1, 4, 6, ...
技术分享
for i = [2, 8]
    if entry[i] == refused
        declined[ethnicgroup, i]++
else
     j = offset[i] + entry[i]
     count[campus, ethnicgroup, j]++
View Code

2) should the array be laid out to its output structure or its input structure?

   技术分享

  The left one result in a little more work when the data was read and a little less work when it was written.

 

2  Form-letter programming

技术分享
Welcome back, Jane!
We hope that you and all the members of the Frank family are constantly
reminding your neighbors there on Maple Street to shop with us.
As usual, we will ship your order to 
    Ms. Jane Q. Frank
    60 Maple Street
    Your Town,  Iowa 12345
   ...  ...
View Code

  behind the scenes a computer looked up your user name in a database record and retrieved fields like

Frank | Jane | Q. | Ms.| 60 | Maple Street | Your Town | Iowa | 12345  

  seperate form letter generator from form letter schema

技术分享
Welcome back, $1!
We hope that you and all the members of the $0 family are constantly
reminding your neighbors there on $5 to shop with us.
As usual, we will ship your order to 
    $3  $1  $2.  $0
    $4  $5
    $6, $7  $8 
   ...  ... 
View Code
技术分享
read fields from database
loop from start to end of schema
    c = next character in schema
    if  c != $
        printchar  c
    else 
        c = next character in schema
        case c of 
            $ :         printchar $
            0 - 9 :   printstring field[c]
            default :   error("bad schema")
View Code

 

3  Four principles

1) rework repeated code into arrays

    a long stretch of similar code is often best expressed by the simplest of data structures, the array

2) encapsulate complex structures

    define a sophisticated data structure in abstract terms, and express those operations as a class

3) use advanced tools when possible

    Hypertext, name-value pairs, spreadsheets, databases, languages are powerful tools

4) let the data structure the program

     before writing code, thoroughly understand the input, the output and the intermediate data structures

以上是关于<编程珠玑>笔记 四条原则的主要内容,如果未能解决你的问题,请参考以下文章

<编程珠玑>笔记 程序验证

[读书笔记·编程珠玑] 数组移位(待填坑)

编程珠玑第一章中的代码

读书笔记第一周《编程珠玑》

抽样算法 - 编程珠玑(续) 笔记

编程珠玑第一章位图排序