在牛人的博客中提到了..如果你的代码可以copy-past的时候,那么久证明你的代码出现了重复.而这种重复仅仅是虚假的代码行的增加而不是像其他的代码复用那样降级成本. copy-pase代码意味着你违法了不重复自己的原则(DRY原则). 而一旦你在你的方法中或者方法直接开始了copy-past,那么久意味着你的代码需要Extract Method. 恩在文章(1)(2)中介绍了部分的重构方法. 在提取放置之后呢,还可以根据情况利用Move Method重构手法,将其搬移到一个类中,然后在原来的调…
看了一个比我牛的人的博客园的博文"避免复制和粘贴".里面提到了重构手法Extract Method.  所以又搜了一下Extract Method. 这里先自我理解Extract Method 再自我反思博文"避免复制和粘贴" 先插一个题外话就是我们为啥要重构,否则真没看文章的必要了..... 1.更方便地添加新的功能,在添加新的功能之前,查看以前实现的相关代码,如果发现可以通过重构使得添加新功能更加简单,那就应该先重构.重构完成后,以前的测试用于保证重构没有破坏原…
好了.在上一篇里面讲了讲怎么把临时变量应该从函数里面剔除去.这个过程叫做从临时变量变成查询 那么接下来我们聊聊把代码提炼成函数,有叫做用函数对象取代函数 那么,问题来了:在函数中什么样的代码是需要被提炼出来单独成为函数的? 一般而言 代码里面的注释会指出  代码用途 和 实现手法直接的语义距离. 这里就暗示着如果代码前方有一行注释的话就以为这这里是需要提炼成函数的,并且可以在代码的基础上给这行代码命名(所以啊,这里的函数名很重要,因为他还承担了注释的作用,要让人看了这个函数名就能知道这个函数在干…
最近读了读关于重构的文章,做了个小总结(在编程思想目录下<从文章"避免复制与粘贴"到文章"Extract Method"的反思 系列>). 然后因为新公司要求在eclips下面搞开发,所以这里就从网上找了一个文章来讲解如何在eclips下对代码进行Extract Method .  原作者链接:http://jingyan.baidu.com/article/cbf0e5009602352eaa2893a0.html…
小编心语:不知不觉已经第四部分了,非常感谢很多人给小编提的意见,改了很多bug,希望以后能继续帮小编找找茬~小编也不希望误导大家~这一节,主要讲的 是如何显示文章列表和让用户修改文章,小编预告一下(一共有八节哦)如果有不懂得地方,或者本文呢没有讲清楚的地方,敬请期待下一章节. 一.前言 上节教程中实现了发布文章的功能,本节教程中将大概实现在首页和用户主页分页显示文章和标签列表.用户能够修改删除文章. 二.Let's go 1.首页显示文章和标签列表 我们需要在首页显示文章和标签列表,修改view…
目的:登录cnblog后新增文章后再次删除该文章并验证 代码如下: #coding: utf-8 from selenium import webdriver from time import sleep import unittest import time class DeletePost(unittest.TestCase): def setUp(self): self.dr = webdriver.Chrome() self.dr.maximize_window() #定义登录方法 de…
我们在建站时经常会在文末加一个本文地址,那么dedecms文章页如何调用当前文章URL呢?这样做的好处是增加文章的唯一标识,更进一步的做法是在head中加个cannacial标签,告诉搜索引擎url的唯一性,避免重复页面被收录. 1.第一种方法,其实只要加一个标签就可以了 {dede:field name='arcurl'/} 保存article模板,重新生成一下页面,看看是不是当前文章url已经出来了. 2.网友还有说到另外两种方法,一个是调用sql,这种方法还没测试过,涉及到数据库的比较不喜…
前言 看重构6.4Replace Temp with Query(以查询取代临时变量)中提到Replace Temp with Query往往是你运用Extract Method之前必不可少的一个步骤,局部变量会使代码难以被提炼, 其中Extract Method是VS自带的功能,我从VS2003用到VS2015还从没有用过这个功能,想想作为一个Neter也应该反思啊. 重构中指出当看到一个过长过大的函数需要很多注释才能让人理解就会把这段代码放入一个独立的函数中,那么Extract Method…
在编程中,比较忌讳的一件事情就是长函数.因为长函数代表了你这段代码不能很好的复用以及内部可能出现很多别的地方的重复代码,而且这段长函数内部的处理逻辑你也不能很好的看清楚.因此,今天重构第一个手法就是处理长函数--Extract Method,抽取成一个独立的小函数. 我个人来说也很喜欢短小函数,因为他们代表了高强度的复用与灵活性.对于短小函数来说最最关键的就是短小函数的命名,其实你就是给了这些短小函数自我解释的机会,所以你如果给这些短小函数起一个接近其语义的名字,那当你读起长函数来说,就像是阅读…
Example public void startup() { ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(10000); System.out.println("The server is listening on 10000 port ..."); while (true) { serve(serverSocket.accept()); } } catch (IOException…
背景: 你有一段代码可以被组织在一起并独立出来.将这段代码放进一个独立函数,并让函数名称解释该函数的用途. void PrintOwing(double amount) { PrintBanner(); //print details Console.WriteLine("name:"+_name); Console.WriteLine("amount:"+_amount); } void PrintOwing(double amount) { PrintBanne…
网站最近更新等地方,发现DTCMS没有获取所有栏目文章列表的标签,只能自己写 思路:获取所有栏目文章列表不难,难点在于linkurl的写法 1.制作获取所有文章列表标签 DTcms.Web.UI\Label\article.cs中 /// <summary> /// 自定义:文章列表 /// </summary> /// <param name="top">显示条数</param> /// <param name="str…
文章发布时间:[field:senddate function=MyDate('m-d',@me)/] 文章最后更新时间:[field:pubdate function=MyDate('m-d',@me)/]…
很多朋友在使用织梦程序做网站的过程中,难免需要添加一些测试文章用于测试网站功能模板等,还有些人朋友网站改版需要变更内容的时候,面对着众多的老文章后总是一筹莫展! 由于织梦后台并不自带一键删除整站文章的功能,所以只能手工一页页的删除,白白增加了一堆的工作量,并且即使删除完全部文章后,新添加的文章id号也并不是从1开始!在这将教大家如何使用织梦自带的sql命令行工具,一键删除整站文章,并使id号自动归1. 具体方法: 1.点击系统——sql命令行工具,进入操作界面. 2.复制以下sql语句到sql命…
文章内容使用django-ckeditor 1)安装django-ckeditor pip install django-ckeditorpip install Pillow 2)在settings.py的INSTALLED_APPS里添加ckeditor和ckeditor_uploader两个应用 INSTALLED_APPS = ( ... 'ckeditor', 'ckeditor_uploader' ) 3)同时需要在settings.py里设置ckeditor的文件上传路径等配置: .…
dedecms系统使用过程中,常遇到输入的标题原本输入的字数跟保存成功后的数字长度不一样,这个是因为 织梦dedecms系统默认的文章标题字数限制是60,也就是只能输入30个汉字,超过的会自动截断删除,那么少的字段不够用怎么办呢, 修改的方法很简单,只要两步解决织梦DedeCms中限制文章标题字数的问题: 第一步.在后台进入 系统 -> 系统基本参数->其它选项 -> 文档标题最大长度把次参数修改为需要设置的标题最大长度,默认参数是60,一般我们修改成90. 第二步.在后台中,进入系统-…
這個問題我找了很多資料都沒有明說是如何解決,后來突發奇想得出我的解決方案如下,所以特此記錄一下: object postId = blogService.NewPost(0,"admin","123456", new { post_title = "My post 20130711", post_content = "This is my post on 2013/07/13.", post_status = "pu…
操作dede_arctiny表,将和栏目对应的typeid所有文章去掉即可.…
       本文从哈利_创.转载请注明出处.有问题欢迎联系本人!        邮箱:2024958085@qq.com 上一期的地址: DX 9 UI设计学习笔记之二 第4章 Introducing DirectInput ====================================================================== 在这一章中我们要学到例如以下东西: .Create COM interfaces that represent and contr…
WCF后传系列(10):消息处理功能核心 摘要: WCF是一个通信框架,同时也可以将它看成是一个消息处理或者传递的基础框架,它可以接收消息.对消息做处理,或者根据客户端给定的数据构造消息并将消息发送到目标端点,在这个过程中,一切都是围绕“消息”而展开的.WCF在消息处理体系结构提供统一编程模型的同时,还允许灵活的表示数据和传递消息,本文将介绍如何配置消息支持各个SOAP和WS-Addressing版本或者不用任何SOAP和WS-Addressing,以及如何控制消息状态等.   WCF后传系列(…
public function index(){ //获取内容列表信息 $res = db('article')->alias('a') ->join('category b', 'b.id=a.cid') ->join('pics c','c.aid=a.id','LEFT') ->order('a.istop desc,a.addtime Desc,a.addtime Desc') ->field('a.*,b.name,count(c.pic) as pic') -&g…
在用dede调用列表标题出来的时候,会发现标题文字字数显示不完全,那是因为dede默认标题出来长度是30个字符,为了让标题显示完整,要做以下修改! 进入后台–系统–系统设置–系统基本参数–其他选项–文档标题最大程度改为你要的长度原默认是60(这里改为了100) 登陆数据库,改数据库表dede_archives表里面的title字段,原默认是60,(这里改为100). ALTER TABLE dede_archives CHANGE title title VARCHAR(100)…
看见一个过长的函数或者需要一段注释才能让人理解的代码,可以考虑将这段代码放进一个独立函数中. 创造一个新的函数,根据这个函数的意图来对它命名(以它“做什么”来命名,而不是以它“怎么做”命名). 需要重构的代码如下(代码并不复杂,只是为了说明方法): function print () { var num = 1; console.log('*****************'); console.log('******Hello******'); console.log('***********…
理解:本文中的“提取方法对象”是指当你发现一个方法中存在过多的局部变量时,你可以通过使用“提取方法对象”重构来引入一些方法,每个方法完成任务的一个步骤,这样可以使得程序变得更具有可读性. 详解:如下代码所示,Order 类中的Calculate方法要完成很多功能,在之前我们用“提取方法”来进行重构,现在我们采取“提取方法对象”来完成重构. 重构前代码: using System; using System.Collections.Generic; using System.Linq; using…
理解:经常写的代码中,有一些计算逻辑比较复杂的方法,写下来一个很长很长的方法,我们可以把这个方法,根据功能,分解成单独的几个小方法.这样做不仅能够增加代码的可维护性,而且增加了易读性. 详解: 重构前代码: public class Receipt { private IList<decimal> Discounts { get; set; } private IList<decimal> ItemTotals { get; set; } public decimal Calcul…
函数 简短,命名良好 函数名描述的是做什么 而不是怎么做 行数过高的代码中 将一大段做一个事的代码提取到独立的method 中 高层函数直接引用. 创建新函数 将提炼的代码平移到目标函数中 检查是否引用了 作用域仅限于源函数的 的变量,包括局部变量 & 源函数参数 ->将局部变量作为参数传给新函数 还是 提取函数的原则  函数就是函数 不在做函数作用外的工作 ,即不能和外部交互, 不能修改函数外的变量.…
富文本ZSSRichTextEditor是iOS原生与网页交互的集大成者,各种交互.自然问题也是多多,这篇文文章陆续更新遇到的奇葩问题. 1.问题1:从头条这种文章里头复制粘贴的文章,里边有图片,我们需求并不需要,如何过滤? 干了客户端,一开始额思路,总想从客户端的webview里头找出路,忙活半天,并未发现可以下手的地方,最后只能从网页这边想办法. #####最后确定如下思路: 找到html中zss_editor_content这个div容器的粘贴动作(onpaste)-- 在这个方法中遍历h…
ueditor编辑文章时候.当现有文章有图片的时候, 再复制粘贴文本进去的时候.里面的图片就不能显示了, 编辑器查看文章Html代码,图片路径显示为:src="http://localhost/images/net/error!" 正确是:src="http://localhost/images/adc.jpg" 而我用的是自己定义的server的一个路径  查看源代码,发现这块功能是例如以下流程  当粘贴后.UE会将眼下编辑的全部内容中元素又一次赋值属性,即源代码…
0 url :http://blog.csdn.net/youyou1543724847/article/details/52818339Redis一点基础的东西目录 1.基础底层数据结构 2.windows下环境搭建 3.java里连接redis数据库 4.关于认证 5.redis高级功能总结1.基础底层数据结构1.1.简单动态字符串SDS定义: ...47分钟前1 url :http://blog.csdn.net/youyou1543724847/article/details/52818…
我的收藏 他山之石,可以攻玉 转载请注明出处:https://ahangchen.gitbooks.io/windy-afternoon/content/ 开发过程中收藏在Chrome书签栏里的技术文章,与自己的文章分开. 主要涉及python,android,ubuntu等内容,我自己常常在这里面找回忘了的知识. Chrome书签导出markdown的方法可以在这里查看 python What's New In Python 3.0 - Python v3.1.5 documentation…