什么样的程序员是一个好程序员呢?当我们在给客户开发系统时候,为了后期的优化,预留一些埋点。
通过对这些埋点的优化,可以让客户瞬间感觉系统在运行速度上有质的飞跃,让公司顺利的签署二期开发合同,收取巨额开发费用。
从公司角度来看,这样的程序员就是一个好程序员。 —— 这句话不是红薯说的!
比如:
/***
* 为了后期优化查询速度
*/
public class Sleep {
public Object getObect(){
/***
查询代码
*/
Thread.sleep(5000)
return object;
}
}
我想说的是:凶碟,你下手能否不那么狠啊,建议对代码进行优化,改成 Thread.sleep(1000); —— 这句话也不是红薯说的。
或者你有什么更好的建议呢?不要觉得骇人听闻,真有这样的人,这样的代码!!!
请到下面链接发表评论,领取奖品:
https://gitee.com/oschina/bullshit-codes/blob/master/java/Sleep.java
另外一种隐性的坑请看:
码云 6 周年,我们正在征集各种坑爹代码,很多奖品等你来拿
详细的参与方法请看 https://gitee.com/oschina/bullshit-codes
------ 分割线 ------
其他坑爹代码吐槽:
for 循环和 if 条件判断语句,必不可少吧。但是你见过最多嵌套的循环和条件判断有几层呢?或者说,你最多能容忍多少层的嵌套呢?
我们还是先来看看极端的坑爹代码吧:
// 这个无限循环嵌套,只是总循环的一部分。。。我已经绕晕在黄桷湾立交
if (recordList.size() > start) {
for (int i = start; i < end; i++) {
Map<String, Object> map = recordList.get(i);
Map<String, Object> field11 = (Map<String, Object>) map.get("field"); //name -> code
Map<String, Object> record11 = (Map<String, Object>) map.get("record"); // code -> value
String catagory1 = map.get("categoryId").toString();
// 查询第一种类型对应的其他类型
SalaryDataVo ss = JSON.parseObject(JSON.toJSONString(map), SalaryDataVo.class);
Page page3 = salaryManagerService.getAllRecordsByCondition(ss);
if (page3.getRecords().size() > 0) {
List<Map<String, Object>> salaryDataVos = page3.getRecords();
salaryDataVos = this.reSetMap(salaryDataVos,null,null);
for (Map<String, Object> map2 : salaryDataVos) {
Map<String, Object> field2 = (Map<String, Object>) map2.get("field");
Map<String, Object> record2 = (Map<String, Object>) map2.get("record");
String catagory2 = map2.get("categoryId").toString();
List<SalaryGroupVO> groupList2 = salaryGroupService.getSalaryGroupsItems(this.getUserCorpId(), catagory2);
for (SalaryGroupVO cc : groupList2) {
cc.setCode(cc.getParentId() + cc.getCode());
}
//计算
for (Map.Entry<String, Object> entity : field2.entrySet()) {
String keyName = entity.getKey();
for (SalaryGroupVO s2 : groupList2) {
if ("bigDecimal".equals(s2.getItemType()) && s2.getCode().equals(field2.get(keyName).toString()) && ("部门" != keyName) && ("姓名" != keyName) && StringUtils.isNotEmpty(s2.getItemType())) {
if (field11.containsKey(keyName)) {
if (field11.containsKey(keyName)) {
String code1 = field11.get(keyName).toString();
Double newValue = 0.0;
Double oldValue=0.0;
if (!record11.get(code1).toString().matches("^[0-9]*$")) {
oldValue = Double.parseDouble(record11.get(code1).toString());
if (record2.containsKey(entity.getValue().toString()) && (!record2.get(entity.getValue().toString()).toString().matches("^[0-9]*$"))) {
String value2 = record2.get(entity.getValue().toString()).toString();
newValue = Double.parseDouble(value2);
}
record11.remove(field11.get(keyName).toString());
}
我数了数,一共有 11 层的嵌套!!!
吐槽归吐槽,这样的代码逻辑有什么重构的好方法吗?
到下面链接发表评论,领取奖品:
https://gitee.com/oschina/bullshit-codes/blob/master/java/InfiniteCycle
码云 6 周年,我们正在征集各种坑爹代码,很多奖品等你来拿
详细的参与方法请看 https://gitee.com/oschina/bullshit-codes
前两期坑爹代码:
本项目是受到 MinUnit 的启发而创建的。MinUnit 是一个极简的 C 语言单元测试框架,仅有三行代码,因此其功能亦比较受限。
码云六周年系列更新第二弹 —— Git 只读文件支持!!!
作为一个应用项目,一般会有一些文件来描述生产环境中的配置信息,例如服务连接信息、环境配置信息等。而在本地开发过程中又必须依照本地的服务环境来调整配置这些文件,而如果不小心提交了这些修改,可能会直接导致生成环境中的应用无法正常运行。
所以在 SVN 上有一个非常有用的特性,可以配置某些文件是只读的,不允许提交修改。
而 Git 本身是没有这个特性的,主流的 Git 平台一般会提供只读分支的功能,但无法实现对个别文件或者文件夹的只读限制。
------ 此次有分割线 -------
但是! 全球独一份,码云现在提供了这个功能!!
使用方法如下:
1. 进入仓库页面,右键要设置为只读的文件或者文件夹,选择“标识为只读”(仓库管理员才有权限)
2. 进入仓库管理界面,可以查看和管理仓库所有的只读设置
3. 如果推送代码时候,包含对只读文件的修改则会报错:
代码提交报错:
PR 代码合并报错:
该功能目前面向所有企业版的用户提供,包括免费和付费的企业版以及高校版用户。
值此码云 6 周年之际,我们为大家准备一系列更新以及活动。活动请看 https://oschina.gitee.io/6th
此为更新第一弹!
码云的企业知识库管理功能(文档协作)更新了。在码云企业版中,「文档」功能用于构建团队知识库,方便成员共享知识;文件夹包含文档及文件,为企业提供统一的文档管理。
在「文档」中,每位用户都拥有一个独立的知识管理空间,对文档的类别、发布、预览、历史版本有一个清晰的存储和回溯。
这次,码云为了提升用户对知识库管理的体验,在文档原有的功能上强化了3个功能:
1、知识库整合
将「企业文档」、「企业附件」、「仓库Wiki」整合在一个视图中,将知识库信息集中和有序规范化,便于随时查阅。
2、文件共享
支持多级文件夹,方便管理知识的类型及内容,让成员快速准确的获取信息,缩短检索时间。
3、更细的文档权限管理
可按角色、文件夹、文档来独立配置成员访问权限:「无权限」、「只读」、「读写」,帮助管理者进行知识产权保护,降低代码外泄风险。
此外,此次更新对企业级的文档以及项目级的文档进行隔离,结构更加清晰。
知识点非常多,欢迎大家探索:)
更多关于码云企业版的介绍请看 https://gitee.com/enterprises