欢迎来到健壮与安全的程序设计世界!
你有没有遇过这样的应用程序:才刚输错一点东西就马上崩溃?又或者是一个不需要密码就能登入的网站?这些都是脆弱(fragile)程序的例子。在本章中,我们要学习如何做到相反的事:健壮(robust)且安全(secure)的程序设计。
健壮是指你的程序非常“强韧”,即使输入了预期之外的数据也不会崩溃。安全则是指你的程序能保护数据,防止未经授权的人访问。别担心有些词汇听起来很专业,我们会一步步拆解给你听!
1. 数据验证 (Data Validation):数字守门员
数据验证是计算机进行的一项检查,用来确保输入的数据是合理(sensible)或合乎预期(reasonable)的。想象一下夜店门口的保安:他们会检查你是否在名单上、年龄是否达标,才决定放不放你进去。
它并不能证明数据是正确的(你可能会谎报年龄!),但它能检查数据是否符合规则。以下是你在 AQA 考试中必须知道的三种简单检查方式:
A. 长度检查 (Length Check)
这会检查数据是否达到最少的字符数。
例子:密码长度必须至少为 8 个字符。如果你只输入 "123",程序就会拒绝。
B. 存在检查 (Presence Check)
这只是简单检查字符串是否为空 (empty)。它确保用户没有在没输入任何东西的情况下直接按下“Enter”。
例子:注册新账号时,你不可以把“姓氏”栏位留空。
C. 范围检查 (Range Check)
这会检查数字或数值是否在给定的范围内。
例子:如果程序要求评分介于 1 到 10 之间,范围检查会阻止你输入 11 或 -1。
重点复习:验证是为了确保程序在处理数据前,这些数据是合理的。这能防止程序在稍后执行时崩溃!
核心观念:验证 = 合理的数据。(长度、存在、范围)。
2. 验证 (Authentication):你是谁?
验证 (Authentication) 是确认用户身份 (identity) 的过程。简单来说,就是确保登入的人确实是他所声称的那个人。
考试时,你只需要知道如何编写一个使用用户名 (username) 和密码 (password) 的简单程序流程即可。
你知道吗?在这个阶段,你只需要考虑明文 (plain text) 的账号与密码。这意味着我们暂时不需要担心复杂的加密技术(把密码乱码化)!
简单的验证步骤:
1. 要求用户输入用户名。
2. 要求用户输入密码。
3. 检查用户名与密码是否与系统中存储的数据相符。
4. 如果相符,就让他们登入!如果不符,则显示错误信息。
核心观念:验证通过用户名与密码来证明身份。
3. 测试:找出“程序错误 (Bugs)”
没有程序员能第一次写程序就完美无缺。测试 (Testing) 是执行程序以找出错误(bugs)并确保其符合需求的过程。
测试时,我们会使用不同类型的测试数据 (test data) 来观察程序的反应。想象我们正在测试一个只接受 1 到 10 之间数字的程序,我们会用到以下数据:
正常 (Typical) 数据
这是预期内的数据,理应被接受。
例子:5 或 7。
边界 (Extreme) 数据
这是处于允许范围边缘 (limit) 的数据。它包含了有效范围的最极端数值,以及范围外第一个无效的数值。
例子:如果范围是 1 到 10,边界数据将会是 0, 1, 10, 和 11。
错误 (Erroneous) 数据
这是类型错误 (wrong type) 或完全不该被接受的数据。
例子:输入 "banana" 而不是数字,或输入像 @ 这样的符号。
记忆小撇步:记住 N.B.E. 就对了!
Normal(正常) - 运作正常。
Boundary(边界) - 处于边缘。
Erroneous(错误) - 预期会出错!
核心观念:测试使用正常、边界和错误数据来寻找并修正错误。
4. 错误类型:为什么它无法运作?
当程序无法运作时,通常归咎于两种类型的错误。理解两者的差异对考试非常有帮助!
语法错误 (Syntax Errors)
语法错误是代码中的“文法”错误。编程语言有非常严格的规则。如果你忘记括号、拼错指令,或是漏掉冒号,计算机就无法理解该怎么执行。
重要:只要有语法错误,程序将完全无法执行。
例子:写成 prnt("Hello") 而不是 print("Hello")。
逻辑错误 (Logic Errors)
逻辑错误是程序设计思维上的错误。程序可以正常执行而不会崩溃,但会给出错误的结果。
例子:你想计算 10 + 10,但不小心输入了 10 * 10。计算机会给你 100 而不是 20。它完全按照你的指示执行,只是你的“逻辑”错了!
比喻时间!
语法错误就像用一种不存在的语言写句子。没人听得懂你在说什么。
逻辑错误就像给人错误的指路信息去电影院。对方可以完美地照着你的指示走,但最后却走到公园去了!
核心观念:语法错误会阻止程序执行。逻辑错误让程序执行但产生错误的输出。
快速复习栏
• 数据验证:检查数据是否合理(长度、存在、范围)。
• 验证:检查用户身份(用户名/密码)。
• 测试数据:正常(典型)、边界(边缘)、错误(错误类型)。
• 语法错误:“文法”错误;程序无法启动。
• 逻辑错误:计算或步骤错误;程序给出错误答案。
如果刚开始觉得很复杂也别担心!只要多练习写写小程序,并用奇怪的数据去“弄坏”它,你会发现找出这些错误变得越来越容易!