#编程# 根据分支(开发任务)的性质,有些分支没有保留的意义的,例如很短的除错、发布分支;但是表征「程序逻辑结构」的功能分支,有保留的意义,因为尝试性功能开发可以有更细的回滚粒度。另外,当我开通一条分支的时候意味关找到了程序的一个并行逻辑结构——原分支与分叉分支是并行关系。
12月6日
#编程# 一直有个困惑,就是私有分支合并到公共分支后要不要删除。有人强烈建议删除。但是我觉得留着似乎也没有什么大碍。有这样争论证明对分支/提交存在的原理理解不足。其实一个极理想的开发模式是,开发不需回滚,提交只是为了备份。但现实开发存在尝试性的开发,需要回滚替换历史。
12月5日
#编程# 「程序逻辑结构」是仓库、分支和提交的设计的基点,多人协作只是一种包装转换。而提交、分支的设计是一种高度的艺术。因为程序逻辑结构是一种高度困难的分析设计工作。这个困难表现在,第一,你不知道怎么命名分支,什么时机分支最好,第二,你不知道什么时候提交一个新版本,难写提交描述。
12月5日
#编程# 一些git所谓经典文本对「分支」的解释非常的表面。我在想分支的哲学不但在于在多人并行协作,也表现在「程序逻辑结构」。也就是说,分支创建的理由是多种多样,核心是开发的任务。而仓库、分支和提交(commit),都是开发任务,只是粒度不同。
12月5日
#编程# 为了让「中心库」更清晰,最好将为「本地分支的数据备份」任务与「公共分支上游同步」的任务分开不同的远程库。
12月1日
#编程# 在认识VCS的初期,对其的功用的认识主要在于数据备份;后来更看重多人协作。从多人协作共同推进一个功能开发角度看,本地私有分支,之前说不需要上游分支来分享贡献,但是有一个需求显示私有分支也要上游,那就是数据备份。最好选用不同方案来解决这些不同需求。
12月1日
#编程# 关于tracking branch理解的关键是只有公共分支才被tracked的,私有分支不需要。但是有几点容易让人困惑,特注意:1)从中心库克隆默认是track的,因为被认为都是公共的;2)团队任何人可自创建公共分支,要手动配置;3)私有分支常合并到公共分支,间接被tr
11月29日
#编程# 本地私有分支的意义在于,这个分支(功能)是否由你一个人来完成?如果不是,那这个分支有一个上游(tracking branch),由共同开发这些个功能(或大模块)人所共享,dev就是一个最特殊的例子;如果不是,私有分支不需有上游。
11月21日
#编程# git一些关键逻辑,首先,远程仓库(分支)是团队共享的,是团队成员都可能操作的,所以必须注意版本同步,而本地仓库(分支)是你自己的,爱怎么改都可以;其次,如果有人专职发布,那只需中心库有master,其他只需要在dev分支上操作,专职人员负责同步dev和master。
11月21日
#编程# 版本跟踪最关键的概念是commit。commit可以看成一个版本,一次版本增量,一集变更。没有严格的版本控制理论规定commit是确切是个什么,因为演化是不定方向的,只是建议版本增量不要太大或太小,太不相关,方便回滚,理解程序结构和演化过程。
11月20日
#编程# 当我们说,一个局部变量或一个类名应该「如何命名」的时候,可以引出一系列的「软件设计」知识、技艺和原理。「软件设计」是一极其困难的领域。
9月18日
#编程# 现在我不会把类对象看成一种数据(包)类别,只有原始类型(像int)才会看成数据,类对象一律看成「计算任务」。而面向对象技术(封装继承多态)都看成是分割计算任务的工具和利器。
7月31日
#编程# 基于应用框架和面向对象的“高级”编程设计,似乎已经远远偏离了“计算”的设计,因为你根本感觉不到自己在设计计算——操控流的有目的安排。大部分时间都在查阅框架文档,了解各种框架特性,一套就完成编程设计。我在想这样的编程任务是怎样的一种工作,又有怎样的设计基点。
7月28日
#编程# 看到了JAVA为了提供动态特征,增加语言复杂性的两点:第一,泛型;JAVA可以在类及其方法定义中使用了泛类型(使用 type variable保留类型信息),这是固态类型语言所没有的动态性;第二,Class类,类对象本身的元信息开放给程序员管理,这也增加语言复杂性。
7月24日
#编程#android界面编程的核心概念有,第一,activity,fragment,view是三种相似但粒度不一的UI类;第二,layout和view的微妙关系在于,一次完整的交互呈现都是二者的结合,也就说交互页的形式由其各占一半,单一layout或view不足于实现一次交互
7月13日
#设计模式评判重要标准# 用于软件结构设计的设计模式的评判标准是:灵活,优雅和可复用。这样的描述还是太泛。我以为,软件构件复用是一种创作材料的灵活替换,而软件作为(大型)知识创作物,创作者的知识思想(交流)及其本身替换也需要灵活。故软件机构设计是否易于理解和交流,是很重要的标准。
6月24日
#编程# 解耦大型软件系统就是厘清软件结构及其计算任务的过程,虽然由于软件种类不同(),全面解耦并不是都是的必要的,因为灵活是以损耗性能为代价,但是逻辑解耦有助设计、理解和协作开发。
6月16日
#编程# 如果只是开发一种计算任务不多GUI程序,设计(将计算任务分配给类对象)中完全不会用到设计模式(如果很小应用根本没有「设计」,只有简单技术选择),除非你的计算任务繁重,且从零开始。不过看起很小的GUI,如果基于框架,不用模式,也得了解模式。因为那个应用框架有大量的模式。
6月12日
#编程# 判断一支优质的软件,或者优质的艺术品,有两种角度,用户和创作者。在用户角度,优质的标准只有实用价值和美学价值,而在创作者的角度,会考虑到创作过程中的技巧作为优质的标准。像《设计模式》提供的复用设计经验,其实没有一样是从用户角度的标准,都是从创作者角度。
6月11日
#编程# 什么是业务逻辑计算?MVC模式中,如果对业务逻辑理解有偏差可能会赋予M过多的责任。我们说只有存在会话过程中的计算才算业务逻辑操作,像会话的创建(例如创建新用户)和恢复(持久化)不能划进业务逻辑。严格区分业务逻辑与元业务逻辑计算,有利于规划程序逻辑结构。
6月9日
#编程# 到底何为MVC?又为何MVC?其实M就是程序本身,不仅仅是数据;而V,在CLI程序上,V只是一个,就是命令行,CLI没有C,M和V是连在一起的。之所以有C,是因GUI交互计算而生。GUI多为事务性计算,程序庞杂松散,动态性强,故M与V,多设一个C的计算角色。
6月5日
#编程# 程序设计过程就是,标识计算任务,寻找(甚至自建)任务责任的类对象,故「程序设计的技术」除了掌握语言技艺,就是理解计算任务分解技术(将虚拟现实结果还原为类对象行为),框架类搜寻技术,和自建类对象技术 。
5月28日
#编程# 对象是数据和该数据的操作方法的包装。这个定义很简单,但是省略很多前提,什么数据,什么操作。定义很简单,对象本质不简单。对象也叫类实例,它是时空具体的,真实在存在内存中,被CPU执行,但是类(定义)只是纸上东西,不是真的存在物。
5月22日
#编程# 与传统CLI编程(求得一个计算数值)不同,现代编程的计算任务是虚拟现实,交互编程只是虚拟现实比较突出的焦点。
5月22日
#编程# 忽然又对面向对象的本质产生了兴趣。同样一个APP可同时使用android和ios实现,这个事实说明,一个计算结果有两种实现,间接说明,同样基于面向对象,但产生了多样性的实现。对象的概念很关键,相对于类,对象是具体的,它可以表征现代程序结构中“任意”部分。
5月21日
#编程# 当一个线程在开启一个新线程来执行一个慢任务的时候,它不是在自己的内存上操作,创建一个变量,和调用一个子函数,它在创建跟自己一个的存在。这原是 OS的职责,那么语言和OS是怎么实现这些API,包括线程创建,父子线程互通信等 。这对于正确使用多线程技术很重要。
4月21日
#编程#线程控制从应用编程的角度看是很怪异的,二者不在一个层面,语句是不管自己怎么被执行的。由于在OS的保护下,应用程序运行在一个虚拟环境里,并不独占计算机。这些就有了将自己的部分计算划出第二线程进行执行,这样的可能性。 线程控制属于OS开给应用开者的一种特殊的API。
4月21日
#编程##怎么做动画# 对WEB开发人员,很难理解如果做一个交互动画。因为对他们来页面载入与渲染是预设的,这不在WEB编程任务之中。即便JS提供一些局部动画编程接口,但也是被浏览器隐藏大量实现细节,WEB开发人员“看不见”动画在内存级的活动,故亦无能对其编程。
4月15日
#编程# 在CLI时代,一切计算都是很纯粹的。到了GUI,有一部分的计算被用来构建交互场景。也就是说,计算不是为了计算,而是为了辅助计算,构建更直观的人机界面。虽然如此,辅助计算依然是计算,并发与异步只是计算实例和时刻的不同,界面与动画只是输出的不同。
4月14日
#编程# 计算机程序的本质是计算(运算、输入输出),当我看一个屏幕对象的生命周期及活动函数,了解到,对象活动是多步计算(以函数为单元),多个活动及相关数据组成一个类对象(包括创建、活动和销毁 ),不同设备产生不同输入(触摸或键盘),输出到磁盘产生了保存,输出到显存产生了交互动画。
4月14日
#编程# 于是系统开启相的管理接口,让开发者自行根据应用程序特性(用户可能的交互计算行为),对自己程序性能进行管理。
4月4日
#编程# 为什么android提供交互页生命周期接口?在WEB开发中,不存在这个问题,因为页面是无状态的;在一个GUI型应用中,作为开发者只按功能静态完成交互页,无法对用户的行为进行预测的,开发者只能依赖系统提供自动对象管理功能,但是作为系统也不可能对所有类型应用进行预测……
4月4日
#编程# 「交互事件」只是多个执行点,而「图形绘画」则是图形计算的特殊代码,二者其实并没有离开CLI编程概念,故完全可将其包装成类。
3月12日
#编程# GUI应用编程由于任务的复杂性,引入OO模式,GUI编程里存在大量类与对象的概念。类和对象有多种方式——派生和多态等实现代码和数据的重用。另外,有别传统的CLI编程,GUI独有「交互事件」和「图形绘画」的计算任务,这些编程任务也通过类和对象包装实现。
3月12日