yyqng

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

01 2021 档案

摘要:前言(Programming in Lua(4th) 内容基于 Lua 5.3) 虽然在某些方面 Lua 与其他语言有着共同的特色,但下面这些特征是 Lua 特有的: 1. 可扩展;2. 简明;3. 高效;4. 可移植 Lua 使用者分为三大类: 1. 在应用中嵌入地使用;2. 单独使用 ;3. 和 阅读全文
posted @ 2021-01-31 10:07 zziii 阅读(308) 评论(0) 推荐(0)

摘要:5.1 Lua执行过程概述 脚本语言处理代码生成字节码,让虚拟机执行。硬件平台的差异由虚拟机解决,因此相同的代码可以运行在不同的操作系统、硬件平台上。 Lua是基于寄存器虚拟机的编程语言,这里的寄存器并不是物理意义上的寄存器,而是某个物理内存地址。 相比于基于栈的虚拟机,Lua只需一条指令即可执行加 阅读全文
posted @ 2021-01-23 22:41 zziii 阅读(500) 评论(0) 推荐(0)

摘要:使用表来统一表示Lua中的一切数据,是Lua区分其他语言的一个特色。 Lua表分为数组(索引从1开始)和散列表两个部分,可以模拟其他各种数据--数组、链表、树等。 4.1 表的数据结构 //llimits.h:27 typedef unsigned char lu_byte; //ltm.h:18 阅读全文
posted @ 2021-01-19 23:48 zziii 阅读(175) 评论(0) 推荐(0)

摘要:3.1 概述 字符串在Lua中是不可变的数据。每当使用不存在的字符串时,就会创建一份新的数据,创建之后是不可更改的。 3.2 字符串实现 //luaconf.h:595 // 用于8字节对齐 #define LUAI_USER_ALIGNMENT_T union { double u; void * 阅读全文
posted @ 2021-01-19 07:10 zziii 阅读(150) 评论(0) 推荐(0)

摘要://主要有以下几种数据类型 //lua.h:72 #define LUA_TNONE (-1) // 无 #define LUA_TNIL 0 // 空 #define LUA_TBOOLEAN 1 // 布尔 #define LUA_TLIGHTUSERDATA 2 // 指针 void* 使用者 阅读全文
posted @ 2021-01-17 16:49 zziii 阅读(202) 评论(0) 推荐(0)

摘要:1.1 前世今生 Lua于1993年诞生于巴西的Tecgraf实验室,Tecgraf主要专注于图形图像相关的工具研发。 (1)可移植性:使用clean C编写的解释器。 (2)良好的嵌入性:提供丰富的API供宿主与Lua脚本之间进行通信和交换数据。 (3)非常小的尺寸:Lua5.1源码只有一万多行。 阅读全文
posted @ 2021-01-17 12:26 zziii 阅读(347) 评论(0) 推荐(0)

摘要:1. 使测试易于阅读和维护 测试代码的可读性和被测试代码同样重要。很多程序员会把测试代码看做非正式文档,它记录了代码如何工作及如何使用。 当测试代码多得让人望而却步,程序员不敢修改真实代码,不会再增加新的测试。从而对测试代码丧失信心。 2. 有问题的测试代码示例,后面要一一对它们进行修改。 1 vo 阅读全文
posted @ 2021-01-16 18:17 zziii 阅读(210) 评论(0) 推荐(0)

摘要:最好读的代码就是没有代码 1. 别费神实现那个功能--你不会需要它 程序员倾向于高估有多少功能对项目来讲是必不可少的。 程序员还倾向于低估实现一个功能所要花费的功夫。 2. 质疑和拆分你的需求 不是所有的程序都要求运行得快,100%准确,并且能处理所有的输入。 如果把需求削减成一个简单的问题,那么也 阅读全文
posted @ 2021-01-16 16:46 zziii 阅读(90) 评论(0) 推荐(0)

摘要:代码应当用“自然语言”编写 1. 清楚地描述逻辑 1 $is_admin = is_admin_request(); 2 if ($document) { 3 if (!$is_admin && ($document['username'] != $_SESSION['username'])) { 阅读全文
posted @ 2021-01-16 16:35 zziii 阅读(258) 评论(0) 推荐(0)

摘要:应该把代码组织得一次只做一件事,任务可以很小 vote_changed(old_vote, new_vote); // each vote is "Up", "Down", or "" var vote_changed = function (old_vote, new_vote) { var sc 阅读全文
posted @ 2021-01-16 16:21 zziii 阅读(126) 评论(0) 推荐(0)

摘要:所谓工程学就是把大问题拆成小问题,再把这些问题的解决方案放回一起。把这条原则应用于代码会使代码更健壮且更易读。 本章建议是:积极发现并抽取出不相关的子逻辑。 1. 纯工具代码 1 //C++中没有一个库函数读取整个文件,所以不可避免地要写以下的代码: 2 ifstream file(file_nam 阅读全文
posted @ 2021-01-12 23:12 zziii 阅读(132) 评论(0) 推荐(0)

摘要:变量的草率运用会让代码更难理解 1. 减少变量 1)没有价值的临时变量 1 now = datetime.datetime.now() 2 root_message.last_view_time = now 3 4 #上面的 now 没有拆分复杂的表达式;没有更多的澄清;只用了一次。因此是冗余的。 阅读全文
posted @ 2021-01-04 18:36 zziii 阅读(182) 评论(0) 推荐(0)

摘要:代码中的表达式越长,它就越难理解。本章看看各种操作和拆分代码以使它们更容易理解的方法。 1. 用做解释的变量 if line.split(':')[0].strip() == "root": -- username 为解释变量 username = line.split(':')[0].strip( 阅读全文
posted @ 2021-01-04 18:06 zziii 阅读(134) 评论(0) 推荐(0)

摘要:1. 条件语句中参数的顺序 左边更倾向于使用变化的,右边更倾向于使用稳定的。 1 if (length >= 10) 2 // or 3 if (10 <= length) 4 5 while (bytes_received < bytes_expected) 6 //or 7 while (byt 阅读全文
posted @ 2021-01-03 23:37 zziii 阅读(131) 评论(0) 推荐(0)

摘要:1. 让注释保持紧凑 1 //反面示例 2 // The int is the CategoryType. 3 // The first float in the inner pair is the 'score', 4 // the second is the 'weight'. 5 typede 阅读全文
posted @ 2021-01-03 22:44 zziii 阅读(112) 评论(0) 推荐(0)