软件工程2021:第2次作业—— 谈谈鸿蒙操作系统
一、概述鸿蒙操作系统
- 开发背景
鸿蒙OS发布于2019年,但是最早可以追溯到2012年,彼时任正非与华为2012实验室的专家座谈时提出,华为要自研操作系统做备份,哪怕几十年都用不上也一定要做。否则一旦操作系统“断粮”对华为就是数千亿美元的损失。
- 需求
鸿蒙系统是面向未来的系统,物联网时代的系统,覆盖的领域非常多。工业的发展趋势很容易判断,但是人的需求却不像工业一样是循序渐进的变化,而是需要天才的眼光和判断力去寻找挖掘,是一种质的突变。网络系统的未来要求是“超高速、低时延”,这是个技术要求问题,华为在这个领域是专家,但是当网络技术进入“无人区”之后,创始人任正非也开始迷茫。同理,当鸿蒙系统从一个工业技术系统迈向手机操作系统时,它服务的对象不再是千千万万个有统一标准的连网设备,而是千千万万有不同想法的人,之间的区别绝非仅仅是技术的迁移过渡,而是对手机的体验需求,对未来网络的需求,对人类自身情感的更深刻理解的综合判断。
- 开发历史
- 应该场景
鸿蒙系统是基于微内核的全场景分布式OS,可以连接到大屏、手机、PC、音响等。鸿蒙OS的出发点和Android、iOS都不一样,是一款全新的基于微内核的面向全场景的分布式操作系统,也就是说,目前的鸿蒙系统确实还是基于互联网打造的OS,而不是直接作为手机OS来使用。当然,鸿蒙系统将在安卓版设备上投入商用,用于支付、人脸识别、指纹这种高安全级别场景,未来华为整个操作系统都将使用鸿蒙!
二、关于鸿蒙是否套壳的争议
- 什么是创新
操作系统开发思维的创新:鸿蒙不止关注的是手机端的使用而是与新时代技术的接轨包括:硬件互助,资源共享。一次开发,多端部署。统一OS,弹性部署。
- 代码复用与创新的关系
创新未必要从代码创新入手,合理的代码复用是必要的。经典的代码就像公式一样,你不可能为了创新而强行另起炉灶,反而不现实。更多地,我们要学会站在伟人的肩膀上,创造更多新的实用的特性,这才是最重要的。
三、代码风格分析
1. 好的代码风格1:
-
- 代码:
import java.io.FileReader; import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class BD_hw_1 { public static void main(String[] args) throws Exception { // 数据目录 String sourse = "C:\\Users\\26592\\Desktop\\data.txt"; // 读取数据 FileReader fileReader = new FileReader(sourse); char[] buffer = new char[1]; HashMap<String, Integer> map = new HashMap<>(); int len; while ((len = fileReader.read(buffer)) != -1) { String s = new String(buffer, 0, len); // 过滤逗号、回车、换行 if (",".equals(s) || "\r".equals(s) || "\n".equals(s)) continue; Integer value = map.get(s); if (value == null) { map.put(s, 1); } else { map.put(s, ++value); } } // 迭代器遍历 Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, Integer> current = iterator.next(); System.out.println("<" + current.getKey() + "," + current.getValue() + ">"); } fileReader.close(); } }
- 代码:
-
- 分析:驼峰法命名长变量,变量名做到见名知意,添加适当注释
2. 好的代码风格2:
-
- 代码:
import requests import re url = 'https://movie.douban.com/top250' header = { 'user-agent': 'Mozilla/5.0 ' '(Windows NT 10.0; Win64; x64) ' 'AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/93.0.4577.63 Safari/537.36 Edg/93.0.961.47' } data = requests.get(url, headers=header).text pattern = re.compile(r'<span class="title">(?! )(.*?)</span>') name = re.findall(pattern, data) print(name)
- 分析:变量命名见名知意。适当分行,不要在一行中写太多代码。
- 代码:
3. 不好的代码风格1:
-
- 代码:
int func(){ ... } int Func() { ... }
- 分析:风格上下不一致,函数名定义随意,难以理解作用。
- 代码:
4. 不好的代码风格2:
-
- 代码:
public class Test1{ public static void main(String[]args) { float a=333.5f;int b=992;int c=1231;int d=2;float sum=a*(b+c/d); System.out.println("计算333.5 * (992 + 1231 / 2)");System.out.println(sum);System.out.println(a*(b+c/d)); } }
- 分析:缺少换行,各种元素全都挤在一起,看起来非常糟糕。
- 代码: