代码所有制(Code Ownership)

版权所有,欢迎转载,但请注明作者,译者和出处。如翻译欠妥,欢迎不吝指正。


欢迎关注微博:风再起时我就走

英文原文链接:点击打开链接

 

在我的职业生涯中,碰到过各种各样的代码所有制模式。我把它们归纳为三大类:

1、         强代码所有制:把程序分解组织为模块(类,函数,文件),然后为每一个模块指定一个程序员。程序员只能修改归属于自己的模块代码。如果他们需要修改其他模块,则需要告知负责该模块的程序员,然后让这个程序员去做修改。如果你想加快这个过程,你可以直接对这个模块写完补丁代码,然后把它交给代码所有者。

2、         弱代码所有者:与强代码所有制类似的是,它也把代码模块化之后分别指派给对应程序员,不同的是,它允许程序员直接对属于其他程序员的代码做出修改。所有者对自己的模块代码负责,并且需要时刻关注其他人在他所拥有的代码做出的变更。如果你试图对其他人的模块代码做出比较重大的修改,事先最好还是要与代码所有者进行沟通。

3、         集体代码所有制:它抛弃了个人拥有代码的概念。在这种模式下,代码为整个开发团队所共同拥有,任何人可以对改动任何代码。也可以理解为代码无所有制。它强调的概念是代码属于整个团队而非独立的程序员个体。(代码集体所有制的概念来自于XP极限编程,在XP第二版中,这被称之为共享代码)。

 

以上三种,我个人最不喜欢强代码所有制。实际开发中,有太多的需要去改动其他人的代码的情况。说服代码所有者去修改代码,然后再等待修改完成,需要太长时间,这通常会导致项目延迟和其他更深层次的问题。当需要修改的内容很简单的时候,这尤其令人郁闷。

 

仅仅是简单修改但是却不能顺利快速完成的一个很好的例子是重命名一个公开的方法。现代的重构工具可以很好的完成这个,但是如果跨模块修改,却违背了这个代码所有制的规定。

 

更糟的情况是,当你要进行改动的时候,因为你无法很快地修改,你直接复制了一份其他模块的代码到你们的模块中,然后做出一些修改之后直接调用这部分代码。很显然,这是一个很糟糕的处理方式,将来,你必然需要对这个糟糕的代码状况做出处理。

 

弱代码所有制是避免这些问题的一个很不错的方式。大家都可以自由的修改代码,而只需要模块所有者对这些改动保持关注并确保改动没问题。

 

弱代码所有制和集体代码所有制之间如何选择,这与团队的成员工程密切相关,这两个方式都可能成功,或者失败,难以断言孰优孰劣。就我个人而言,我更喜欢集体代码所有制的创新的概念,尤其在极限编程的环境中。

好的,以下是一个简单的 Python 爬虫代码,可以用来在天眼查上爬取上市公司的数据: ```python import requests import json import time # 设置请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} # 设置请求参数 params = { 'appKey': '你的appKey', 'pageIndex': '1', 'pageSize': '100', 'sortType': '0', 'industryId': '', 'areaCode': '', 'companyType': '', 'companyOrgType': '', 'isSortAsc': 'false', 'searchKey': '' } # 设置需要爬取的行业类型、所有制类型、地区类型 industries = ['制造业', '金融业', '房地产业', '信息技术服务业', '批发和零售业'] ownership_types = ['国有企业', '非国有企业'] area_codes = ['320000', '330000', '340000'] # 爬取数据并保存到文件 for industry in industries: for ownership_type in ownership_types: for area_code in area_codes: # 设置请求参数 params['industryId'] = industry params['companyType'] = ownership_type params['areaCode'] = area_code # 发送请求 response = requests.get('https://api.tianyancha.com/services/v3/search/sNorV3', headers=headers, params=params) # 解析响应 if response.status_code == 200: data = json.loads(response.text)['result']['items'] print(f'共找到 {len(data)} 家公司') with open(f'{industry}-{ownership_type}-{area_code}.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False) time.sleep(1) # 防止被封IP else: print('请求失败') print('数据爬取完成') ``` 该爬虫会依次爬取指定行业、所有制、地区的上市公司数据,并将爬取到的数据保存到对应的文件中。你需要将代码中的 `appKey` 替换为你自己的天眼查 API Key。另外,该代码只能获取到公司的基本信息,如果需要获取更多数据,可以根据天眼查的 API 文档自行添加请求参数。 对于现金水平数据,可以在公司的财务报表中找到,包括现金账户余额、经营现金流、自由现金流等指标。你需要根据实际需求收集不同年份的财务报表数据,并计算出相应的指标值。 对于行业、所有制、地区等分类变量,可以直接从爬取到的数据中获取。 对于影响现金水平的因素变量数据,可以在公司的财务报表中找到相应的指标,包括净利润、营业收入、总资产、负债总额、经营现金流、自由现金流等。你需要收集相应年份的财务报表数据,并计算出相应的指标值。此外,公司治理、内部控制等因素可能需要通过其他途径进行收集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值