如何写好的代码.ppt
《如何写好的代码.ppt》由会员分享,可在线阅读,更多相关《如何写好的代码.ppt(70页珍藏版)》请在三一办公上搜索。
1、如何写好的代码,数融信息技术有限公司冯国平,什么是好的代码,问题:什么是好的代码?什么是坏的代码?,什么是好的代码,代码要人能够读懂-Martin Fowler任何一个傻瓜都能写出机器能懂的代码,好的程序员应该写出人能读懂的代码。-Martin Flowler 重构,什么是好的代码,代码是给人看的-Harold Abelson程序必须是写给人看的,仅仅偶尔才在机器上执行。-Harold Abelson等人,什么是好的代码,程序是人-Steve McConnell编写程序首先为人,其次为计算机。-Steve McConnell,什么是好的代码,写烂代码是危险的-Martin Golding编程的
2、时候,总是想着那个维护你代码的人是一个只读你住在什么地方的、有着暴力倾向的精神病患者。-Martin Golding,什么是好的代码,结论好的代码有很多评价标准,但最重要的标准是“易于理解,人能读懂!”,代码的坏味道,什么是代码的坏味道是一个形象的比喻,由Martin Flower提出。代码坏味道:是指在代码之中潜在问题的警示信号。并非所有的坏味道所指示的确实是问题,但是对于绝大多数坏味道,均很有必要加以查看,并作出相应的修改。,代码的坏味道,hard code1.读不懂qps.add(qpbInvalid);getMulQueryParaBeans(“status”,“1,3”,qps,fa
3、lse);List organizations=orgDataService.getOrgAll();List employees=orgDataService.getEmployeePositionAll(000001);/temp2.引入bug隐患commonService.update(user);MailAccount mailAccount=mailAccountService.getMailAccount(userId);if(mailAccount!=null)user.setMailAccount(mailAccount);mailManageService.connectRe
4、ceive(mailAccount);setUser(user);setCurLanguage(zh_CN);,代码的坏味道,hard codeString replayInfo=-,代码的坏味道,hard code3.难以扩展if(!filepath.endsWith(.jpg),代码的坏味道,hard code4.解决之道.引入常量 List employees=orgDataService.getEmployeePositionAll(000001);/tempprivate static final String BOSS_EMPLOYEE_CODE=000001;List emplo
5、yees=orgDataService.getEmployeePositionAll(BOSS_EMPLOYEE_CODE);/temp,代码的坏味道,hard code.引入国际化处理 String replayInfo=-,代码的坏味道,hard code.读配置if(!filepath.endsWith(.jpg),代码的坏味道,魔法数字1.读不懂for(int i=0;i 200|height 200)errorStr=图片宽高不能超过200像素;ftpUtil.deleteFile(filePath);,代码的坏味道,魔法数字job.setStatus(0);/默认未发布job.se
6、tInvalid(0);/默认未删除3.类型if(linkman=1)return companyContactDao.setLinkman(companyId,id,linkman);else if(linkman=0)return companyContactDao.removeLinkman(companyId,id,linkman);if(jobDeliver.getRecommendOrDeliver().equals(1)fromTo=1;elsefromTo=2;resumeJob.setInvite(1);resumeJob.setFromTo(2);resumeJob.set
7、Reading(0);resumeJob.setInvalid(0);resumeJob.setIsReply(0L);,代码的坏味道,魔法数字if(checkcode=null|!code.equals(checkcode)return 0;User user=this.us.findUnique(from User as u where u.userName=?,username);if(user=null)return 1;/待删除this.userId=user.getId();if(!password.equals(user.getPassword()return 2;4.可以允许的
8、数字for(int i=0;i 0,代码的坏味道,魔法数字5.解决之道引入常量 if(width 200|height 200)errorStr=图片宽高不能超过200像素;ftpUtil.deleteFile(filePath);private static final int DEFULT_IMG_SIZE=200;if(width DEFULT_IMG_SIZE|height DEFULT_IMG_SIZE)errorStr=图片宽高不能超过”+DEFULT_IMG_SIZE+”像素;ftpUtil.deleteFile(filePath);,代码的坏味道,魔法数字5.解决之道使用枚举类
9、型if(linkman=1)return companyContactDao.setLinkman(companyId,id,linkman);else if(linkman=0)return companyContactDao.removeLinkman(companyId,id,linkman);enum OperationType modify,delete;if(linkman=OperationType.modify)return companyContactDao.setLinkman(companyId,id,linkman);else if(linkman=OperationT
10、ype.delete)return companyContactDao.removeLinkman(companyId,id,linkman);,代码的坏味道,重复代码1.完全重复if(companyId=null)Company c=new Company();c.setUserId(userId);companyService.save(c);companyId=c.getId();String corpIdx=companyId.toString();int companyIdStrLength=corpIdx.length();for(int i=0;i 6-companyIdStrL
11、ength;i+)corpIdx=0+corpIdx;c.setCorpIdx(corpIdx);companyService.saveOrUpdate(c);else Company company=companyService.get(companyId);if(company.getCorpIdx()=null)String corpIdx=companyId.toString();int companyIdStrLength=corpIdx.length();for(int i=0;i 6-companyIdStrLength;i+)corpIdx=0+corpIdx;company.
12、setCorpIdx(corpIdx);companyService.saveOrUpdate(company);,代码的坏味道,重复代码public ModelAndView open(Long id,HttpServletRequest request,HttpServletResponse response)throws TException Resume resume=resumeService.get(id);model.addObject(resume,resumeService.get(id);model.addObject(personal,resumeService.getP
13、ersonal(id);model.addObject(jobTarget,jobTargetMap);model.addObject(languages,resumeService.getLanguages(id);model.addObject(languageAchieve,resumeService.getLanguageAchieve(id);model.addObject(additional,resumeService.getAdditionalInfo(id);model.addObject(selfRecommends,resumeService.getSelfRecomme
14、nds(id);model.addObject(educationExperinces,educationService.findbyResumeId(id);model.addObject(jobExperiences,jobExperiencesList);model.addObject(projectExperiences,projectService.findbyResumeId(id);model.addObject(skills,resumeService.getSkills(id);model.addObject(trainningExperiences,trainningSer
15、vice.findbyResumeId(id);model.addObject(certificates,resumeService.getCertificates(id);model.addObject(others,resumeService.getOthers(id);model.addObject(attachments,resumeService.getAttachments(id);model.addObject(privateSpace,resumeService.getPrivateSpace(id);model.addObject(privateAttachments,res
16、umeService.getPrivateAttachments(id);,代码的坏味道,重复代码 model.addObject(printColumns,resumeService.getPrintColumns(id);model.addObject(basicData,basicDataService.getStaticDataByCodeTypeAndLanguage(resumeService.get(id).getLanguage(),RESUME_BASICDATA_CODE);model.addObject(curLanguage,resumeService.get(id).
17、getLanguage();return model;public ModelAndView inResumeGraduate(Long id)ModelAndView model=new ModelAndView(/resume/resumeGraduate);model.addObject(resume,resumeService.get(id);model.addObject(personal,resumeService.getPersonal(id);model.addObject(jobTarget,jobTargetMap);model.addObject(languages,re
18、sumeService.getLanguages(id);model.addObject(languageAchieve,resumeService.getLanguageAchieve(id);model.addObject(selfRecommends,resumeService.getSelfRecommends(id);model.addObject(educationExperinces,educationService.findbyResumeId(id);model.addObject(skills,resumeService.getSkills(id);model.addObj
19、ect(trainningExperiences,trainningService.findbyResumeId(id);model.addObject(certificates,resumeService.getCertificates(id);model.addObject(others,resumeService.getOthers(id);model.addObject(attachments,resumeService.getAttachments(id);model.addObject(privateSpace,resumeService.getPrivateSpace(id);m
20、odel.addObject(privateAttachments,resumeService.getPrivateAttachments(id);model.addObject(printColumns,resumeService.getPrintColumns(id);model.addObject(rewards,resumeService.getRewards(id);model.addObject(dutys,resumeService.getDutys(id);,代码的坏味道,重复代码 model.addObject(practices,resumeService.getPract
21、ices(id);model.addObject(basicData,basicDataService.getStaticDataByCodeTypeAndLanguage(resumeService.get(id).getLanguage(),RESUME_BASICDATA_CODE);model.addObject(curLanguage,resumeService.get(id).getLanguage();return model;2.功能重复JobCommentController.java/*上传简历评论附件*param request*return*/RequestMappin
22、g(value=/uploadJobComment,method=RequestMethod.POST)public void uploadComment(RequestParam(file)CommonsMultipartFile file,HttpServletResponse response)if(file!=null)FTPUtil ftpUtil=new FTPUtil();try ftpUtil.connectServer();String fileName=file.getFileItem().getName();String filePath=FTP_JOB_COMMENT_
23、DIR+UUID.randomUUID().toString()+.+FilenameUtils.getExtension(fileName);Long fileSize=file.getFileItem().getSize();ftpUtil.upload(file.getInputStream(),filePath);response.setContentType(text/html;charset=UTF-8);PrintWriter writer=response.getWriter();,代码的坏味道,重复代码writer.print(fileName:+fileName+,file
24、Path:+filePath+,fileSize:+fileSize+);writer.close();catch(IllegalStateException e)logger.error(e.getMessage(),e);catch(IOException e)logger.error(e.getMessage(),e);finally ftpUtil.closeServer();ResumeCommentController.java/*下载简历评论附件*param request*return*/RequestMapping(value=/downloadResumeComment,m
25、ethod=RequestMethod.GET)public ModelAndView downloadAttach(String fileName,String filePath,Long fileSize,HttpServletResponse response)HttpServletRequest request=getRequest();BufferedInputStream bis=null;BufferedOutputStream bos=null;FTPUtil ftpUtil=new FTPUtil();try,代码的坏味道,重复代码request.setCharacterEn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 如何 代码
链接地址:https://www.31ppt.com/p-5474832.html