技术宅,fat-man

增加语言的了解程度可以避免写出愚蠢的代码

导航

随笔分类 -  代码风格&质量

上一页 1 2 3 4 5 6

转:如何编写出优美的JavaScript代码?
摘要:http://www.csdn.net/article/2012-12-06/2812544-How-to-make-the-beautiful-JavaScript-cod在多年以前,人们注重功能是如何实现的。现如今,随着Web及互联网技术的不断发展,功能仅成了最基本的要求,如何写出漂亮,整洁的代码已成为一个大牛级程序员不可或缺的条件。一位前端开发工程师便在知乎上提问:“我是一名前端开发工程师,主要编写JavaScript,有两年经验。最近在写一些页面上的模块,发现自己在构思的时候总是很清晰,但是写着写着感觉代码越来越乱,看起来就像一坨屎,而我又有点儿代码洁癖,看着越来越乱的代码就不想进行下 阅读全文

posted @ 2012-12-10 10:55 codestyle 阅读(269) 评论(0) 推荐(0) 编辑

重构了一小段C++代码,看样子写代码还是站在不腰疼才能写出好代码啊
摘要:RT,应该说重构前的代码也很不错,还有找毛病比写好代码容易的多,应该说是站着说话不要疼,另外猪头说:那个,修改代码需要勇气和智慧,但主要还是勇气重构前:重构后:第二次重构,好代码还是要精雕细琢啊 阅读全文

posted @ 2012-11-15 16:46 codestyle 阅读(297) 评论(1) 推荐(0) 编辑

关于如何提取代码成为函数,自己浅薄的一些看法
摘要:之前很纠结抽取函数这档子事情,发现自己只要一认真,就会写一堆小函数出来,其实在小函数里跳来跳去的读代码也未必好,抽取函数应该有这么几个原则:复用性,扩展性,层次性,唯一性,清晰性,重要程度就是我列出的顺序,最不重要的就是清晰性,因为过度追求清晰性最终会丧失清晰性复用性,就是多个地方存在相同代码,提取出来作为函数存在,这是最理直气壮的事,写出来也不需要怀疑自己这么做是对的吗?能复用就是最大的理由。大师们总是说DRY,不是吗扩展性, 这是第二大理由,当一段代码被抽取出来成为函数,这个函数就成为了一个接口,隐藏了具体实现,因此当实现变化时,只会影响局部,接口变化了?这就没救了,所以还是需要一些预见性 阅读全文

posted @ 2012-11-08 17:07 codestyle 阅读(550) 评论(4) 推荐(1) 编辑

一堂如何提高代码质量的培训课
摘要:一堂如何提高代码质量的培训课作者: fangang发布时间: 2012-10-31 16:53阅读: 1670 次原文链接 全屏阅读 [收藏] 今天这堂培训课讲什么呢?我既不讲Spring,也不讲Hibernate,更不讲Ext,我不讲任何一个具体的技术。我们抛开任何 具体的技术,来谈谈如何提高代码质量。如何提高代码质量,相信不仅是在座所有人苦恼的事情,也是所有软件项目苦恼的事情。如何提高代码质量呢,我认为我们 首先要理解什么是高质量的代码。 高质量代码的三要素 我们评价高质量代码有三要素:可读性、可维护性、可变更性。我们的代码要一个都不能少地达到了这三要素的要求才能算高质量的代码。 ... 阅读全文

posted @ 2012-11-02 13:45 codestyle 阅读(214) 评论(0) 推荐(0) 编辑

应要求写的比较简单的单元测试代码
摘要:#include <assert.h>#include <stdio.h>#include <stdlib.h>/*作者:猪头被测模块功能:编写一个累加整数数组元素的函数,并把累加结果作为函数返回值返回被测模块参数:整数指针指向数组第一个元素;整数表示数组元素个数 参数异常:如果指针为空则应该返回-1 ,表示传入者参数有错误 *//*被测模块*/int sum(int *array,int length){ int index = 0; int sum = 0; if (array == NULL) { return sum; /*我故意埋下... 阅读全文

posted @ 2012-09-03 15:08 codestyle 阅读(510) 评论(0) 推荐(0) 编辑

The Elements of Programming Style
摘要:《The Elements of Programming Style 》是一本很古老的书。尽管 Fortran 我们不太使用,尽管新奇的语言层出不穷,但这些,30 年的岁月依旧无法掩盖其中的真知灼见。英文版的 google 一下到处有,云风试着摘译几条。把代码写清楚,别耍小聪明。想干什么,讲的简单点、直接点。只要有可能,使用库函数。避免使用太多的临时变量。”效率“不是牺牲清晰性的理由。让机器去干那些脏活。重复的表达式应该换成函数调用。加上括号、避免歧义。不要使用含糊不清的变量名。把不必要的分支去掉。使用语言的好特性,不要使用那些糟糕的特性。该用逻辑表达式的时候,不要使用过多的条件分支。如果逻辑 阅读全文

posted @ 2012-08-17 13:49 codestyle 阅读(397) 评论(0) 推荐(0) 编辑

python: logging日志级别详解
摘要:import logging'''日志级别:critical > error > warning > info > debug,notset级别越高打印的日志越少,反之亦然,即debug : 打印全部的日志(notset等同于debug)info : 打印info,warning,error,critical级别的日志warning : 打印warning,error,critical级别的日志error : 打印error,critical级别的日志critical : 打印critical级别'''handler=lo 阅读全文

posted @ 2012-08-15 23:30 codestyle 阅读(8629) 评论(1) 推荐(2) 编辑

腾讯的编码风格
摘要:ricky的编码风格镇宅神兽 15:51:19你们的代码里没有assert么SH_漫总#MM 15:51:27从来没有这玩意SH_漫总#MM 15:51:36这东西对我们来讲除了误导人以外,没有任何用处镇宅神兽 15:51:54assert 就是让系统直接崩溃SH_漫总#MM 15:51:55嗯,我们百万行代码没有一个assert镇宅神兽 15:52:22哪指针为NULL了咋处理SH_漫总#MM 15:52:32记录log并返回错误SH_漫总#MM 15:52:58任何一层产生的任何一个不确定值的指针,都必须判断是否为空镇宅神兽 15:53:10你们这是在打破我的世界观啊SH_漫总#MM 15 阅读全文

posted @ 2012-07-31 17:05 codestyle 阅读(358) 评论(0) 推荐(0) 编辑

重构实例1:抽取冗余代码 - 未通过测试而进行的第二次修正
摘要:昨天重构了OPEN-API模块,挺高兴,觉得自己做的不错,结果昨天把程序重构完,除了挑出来作为测试接口的代码其他代码都没有测试,今天上午要做其他的维护工作,觉得还是先跑一次测试再说,测试程序并不是特地为这个接口进行开发,当时为这个OPEN-API写了一个SDK,这个程序其实是为了SDK开发的测试程序,且写的并不完善,但即使是这样,测试程序的断言(assert)仍然报告执行出了问题,因此我又去排查程序,发现有几个接口,它的函数参数不只一个参数(self参数),而我的几类再调具体子类的时,就没有提供其他的参数,因此产生运行时错误,了解到这一点,就翻了手上的《python学习手册》花了一个小时解决问 阅读全文

posted @ 2012-07-27 14:26 codestyle 阅读(484) 评论(0) 推荐(0) 编辑

重构实例1:最初的测试代码
摘要:最初的测试代码还是比较能清晰的反映出代码的意图文件: code.py启动: python code.py查看:http://127.0.0.1:8080/app1http://127.0.0.1:8080/app1?id=100import weburls = ( '/app1', 'App1', '/app2', 'App2',)web.config.debug = Falseapp = web.application(urls, globals())class PageBase: def __init__(self): sel 阅读全文

posted @ 2012-07-26 18:34 codestyle 阅读(262) 评论(0) 推荐(0) 编辑

重构实例1:消除冗余代码
摘要:先描述一下场景:我们的web项目提供了若干个基于HTTP协议的POST接口,用于给第三方的用户写入数据,为了验证写入数据者的身份,这样的接口肯定会要求对方传递身份标识,接口得到标识以后会验证写入者的标识,正确就执行请求,错误就返回失败信息,由于是基于同样的检测身份的机制,每个接口都做了同样的事情,体现在代码里就有大量的冗余代码,如果要消除冗余代码,我可以把冗余代码写成一个函数,在每一个接口里调用,这样的话,也会有大量重复的调用语句,感觉还是不完美,于是思考之后还是借助OO来做这个事情,需要说明的是,我们的语言是python,web项目采用的框架是webpy重构之前的代码class Apply: 阅读全文

posted @ 2012-07-26 17:58 codestyle 阅读(1722) 评论(0) 推荐(0) 编辑

代码的持续改进
摘要:#!/usr/bin/env python# -*- coding: utf-8 -*-#工厂模式def createDomTree(htmlStream,type='soup'): if type == "soup": return tnDomTreeWithSoup(htmlStream) if type == "lxml": return tnDomTreeWithlXml(htmlStream) return None #外部依赖的接口,它屏蔽了我具体使用的第三方库class tnDomTree: #public... 阅读全文

posted @ 2012-04-10 13:21 codestyle 阅读(224) 评论(0) 推荐(0) 编辑

预留接口
摘要:def _getNoteSharedStatus(db,attId): list = _get(db,attId) if len(list) == 0: return Falsedef getFileHandler(db,attId,userId): try: list = _get(db,attId) if _getNoteSharedStatus(db,attId): handler = open( util.getFullPath(int(attId)) + "/" + attId, 'rb') ... 阅读全文

posted @ 2012-03-31 16:28 codestyle 阅读(747) 评论(0) 推荐(0) 编辑

代码的坏味道:控制结构嵌套太深
摘要:重构前的代码 def newPrj(self,db,userId,prjName,password,privacy,intro='',status='active'): s = '' flag = False prjId=0 try: t = db.transaction() if privacy == 'public' and len(password) < 1: return '{"result":"error","message":"公开.. 阅读全文

posted @ 2012-03-06 09:43 codestyle 阅读(317) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6