标签: reusability

提高代码可重用性的因素

哪些原则,代码质量,实践,aproaches,语言或框架功能可以帮助您在更广泛的案例中有效地重用功能,类等.所有情况都很有趣:要么您可以修改代码的实现和接口,以启用/改进重用,或者仅实现,或者根本不修改.重用有效性的关键指标是(对我而言):

  • 它减少了多少用于实施和维护的努力
  • 应用质量不会降低
  • 减少了多少复杂性

(所有比较从较低级别重新实现).

PS.如果可能,请为每个答案指定一个因素,并说明它对您的案例有何帮助.

reusability

5
推荐指数
2
解决办法
1147
查看次数

重复使用以前的活动?

我有从菜单选项创建和启动的活动.但是我注意到这可能意味着有时会有两个或更多相同活动的副本.所以我想知道是否有办法看看是否已经实例化了另一个活动,然后让应用程序切换到它或者如果没有实例化则创建一个新活动.

android reusability switch-statement android-activity

5
推荐指数
2
解决办法
2838
查看次数

MVVM - 在Silverlight和WPF之间共享/重用ViewModel

是否可以跨平台共享视图模型 - WPF/Silverlight?我开始把我的VM放在一个单独的程序集中,很快就来到ICommand--然后让我问这个问题?这是可能的,如果这样做有好处吗?我们有可能在将来拥有WPF和Silverlight的客户端应用程序,所以我不想为两者复制VM.

silverlight wpf share mvvm reusability

5
推荐指数
1
解决办法
723
查看次数

如何重用和覆盖继承的javascript函数

我有一个鼠标活动课程.我正在使用dojo b/c我喜欢它的OO方法

dojo.declare("MouseObject", null, {
  constructor: function(){},
  onclick : function(){...},
  _onClick : function(){...}
});
Run Code Online (Sandbox Code Playgroud)

_onClick()侦听窗口生成的鼠标按下/释放事件并确定是否发生了单击.如果有,onClick()则被称为.onClick()执行所有可能的点击共同的功能,因此每次用户点击时都需要调用它.

有时用户可能想要扩展功能onClick()是否仍然存在原始功能而无需复制粘贴它?我能想到的两种方式,我都不喜欢

dojo.declare("MouseObjectChild", [MouseObject], {
  constructor: function(){},
  onclick : function(){this.inherited(arguments);...}
});
Run Code Online (Sandbox Code Playgroud)

这有一个缺点,我必须继续创建我不需要的新类,并且两个添加一个中间函数

dojo.declare("MouseObject", null, {
      constructor: function(){},
      onclick : function(){this._onClick()...}, //child onClick
      _onClick : function(){...}, //parent onClick
      __onClick : function(){...} //listener
    });
Run Code Online (Sandbox Code Playgroud)

但这看起来不是很好的代码


作为赏金,我需要有关如何最好地解决程序 - 用户交互的专家建议.如果程序提供了一个关键功能,例如在画布上绘制一个圆圈,那么用户如何最好地与之交互.如果用户想在圆圈后面画一个三角形怎么办?圆圈前方的一个正方形?然后该程序必须提供前后方法,如下所示:

beforeDraw();
draw();
afterDraw();
Run Code Online (Sandbox Code Playgroud)

这被认为是好设计吗?我应该把函数指针放在一个数组中并按顺序调用它们吗?

javascript dojo function redefine reusability

5
推荐指数
1
解决办法
2343
查看次数

在中央maven项目中定义webapp样式

是否有可能在可重用的maven项目中放置Web应用程序样式(CSS文件和图像)?将此"style-projects"与其他WAR项目一起使用.

最好的祝福

斯特凡

css java reusability maven

5
推荐指数
1
解决办法
119
查看次数

如何在prolog中创建全局变量

我有一个列表,我创建如下:

tab([(top,left),(top,middle),(top,right),(center,left),(center,middle),
     (center,right),(bottom,left),(bottom,middle),(bottom,right)]).
Run Code Online (Sandbox Code Playgroud)

我希望创建一个全局变量AllPosition,它是一个选项卡.所以我做了以下事情:

tab(AllPos).
Run Code Online (Sandbox Code Playgroud)

这是正确的吗?

然后我必须遵循问题:我有一个函数,在选项卡中接收其中一个.我希望删除.所以我这样做了:

place(Line, Column, Tab) :-
AllPos \== [_,_] /*while AllPos isn't empty - not sur if this is done this way*/ -> (member((Line,Column), AllPos) -> (erase(AllPos, (Line,Column), AllPos)).
Run Code Online (Sandbox Code Playgroud)

erase(List, Element, NewList)从List 中删除元素Element并创建一个新列表NewList等于List但没有Element.这两个函数membererase正在工作.

事情是......你可能已经注意到我AllPos到处都用.这是因为我想,我想修改它,以便我可以在以后使用它(在从中移除一些元素之后),在另一个函数中.我的逻辑是对的吗?我能在另一个函数中使用修改过的AllPos吗?谢谢

variables global list prolog reusability

5
推荐指数
2
解决办法
1万
查看次数

如何像UITableViewCell一样重用UIView

我有一个具有相同UIView实例的应用程序。他们像UITableViewCell一样可以重用UIView吗?相似:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
Run Code Online (Sandbox Code Playgroud)

reusability uitableview uiview ios

5
推荐指数
1
解决办法
1945
查看次数

适应性内容的内容管理系统

内容管理系统(CMS)使我们能够轻松维护博客,新闻网站,一般网站等.其中许多设计用于管理内容页面,并提供工具来组织和自定义内容在Web上的显示方式.

但是,正如Mark Boulton在其自适应内容管理文章和Karen McGrane在关于适应自适应内容的讨论中所解释的那样,我们越来越多地不仅向网络提供内容,还向其他平台和渠道提供内容.我们需要工具来管理附带有意义元数据的内容.创建一次,随处发布.

主要思想是干净地存储内容,而不是将其与特定于Web的表示标记交织在一起.因为内容片段在语义上是分隔的,所以它可以很容易地适应不同的平台和频道.因此,它被称为自适应内容.

让我们看一个比较的简单示例:

说我管理新闻文章和事件.要创建一篇新闻文章,我会告诉CMS我正在创建的内容类型,并要求填写一个表单,其中包含针对新闻文章量身定制的各个字段(例如标题,副标题,全文,短片段和图像) .- 即内容片段

使用传统的Web发布工具,我可能不得不在新闻下创建一个新页面,然后在空白的WYSIWYG文本编辑器中输入和格式化新闻文章.- 即内容页面

如您所见,第一个设计允许我以最小的语义单位单独指定内容.当我想要显示或消费它时,系统可以轻松提供我需要的部分.

所以这是我的问题:是否有专门针对自适应内容设计的CMS ,并且它与表示层分离?


注意:这不是关于最佳CMS或我应该使用哪个CMS的讨论.我问的是,是否存在一种非常特殊的工具 - 专为自适应内容设计的CMS - 供开发人员使用.

metadata reusability content-management-system

5
推荐指数
0
解决办法
1157
查看次数

重新使用Redigo连接,而不是每次都重新创建它

连接到Redigo并在函数内部操作数据很容易就像黄油一样,但是当你必须重新使用它的连接时,问题出现了,显然是出于性能/实用性的原因.

在像这样的函数内部执行它:

func main() {

    client, err := redis.Dial("tcp", ":6379")
    if err != nil {
        panic(err)
    }
    defer client.Close()

    client.Do("GET", "test:1")
}
Run Code Online (Sandbox Code Playgroud)

但把它带到外面并不是:

var Client = redis.Dial("tcp", ":6379")
defer Client.Close()

func main() {

        Client.Do("GET", "test:1")
    }
Run Code Online (Sandbox Code Playgroud)

返回以下错误:

./main.go:1: multiple-value redis.Dial() in single-value context
./main.go:2: non-declaration statement outside function body
Run Code Online (Sandbox Code Playgroud)

我已经尝试将连接作为const(ant),将defer放在main函数中让我感到沮丧也不行.

这是一个更大的问题,因为我有许多其他功能必须与Redis通信,但每次重新创建与Redis的连接似乎很愚蠢.

Redigo API仅显示如何创建Dial实例,但不会通过解释如何重用它来进一步说明.

你可能在我的演讲中迷失了方向,但我想在这里提出一些上下文,所以我的简明扼要的问题是:你如何重新使用(不是每次都重新创建)Redigo连接?

go reusability redigo

5
推荐指数
1
解决办法
9715
查看次数

停止重用自定义单元格Swift

我有uitableview一个自定义单元格从数组中获取数据.自定义单元格有一个uilabel和一个uibutton(在uilabel文本或加载文本的数组对象之前不可见- 是零).

在发布时一切都很好.当我按下uibutton正在附加的数组时,新单元格将插入单元格下方.

但是当我滚动时 - 突然uibutton出现在其他细胞上,而这些条件uilabel text isEmpty并不是暗示的.

以下是整个过程的样子 在此输入图像描述

这是我的cellForRowAtIndexPath代码

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath:    NSIndexPath) -> UITableViewCell  {

    var cell:TblCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! TblCell
    cell.lblCarName.text = someTagsArray[indexPath.row]

    if let text = cell.lblCarName.text where text.isEmpty {
        cell.act1.hidden = false
    } else {
        println("Failed")
    }

    cell.act1.setTitle(answersdict[answersdict.endIndex - 2], forState:UIControlState.Normal)
    cell.act2.setTitle(answersdict.last, forState:UIControlState.Normal)

    return cell
}
Run Code Online (Sandbox Code Playgroud)

所以我的一般问题是如何停止重用那些自定义单元格?据我所知,没有直接的方法可以reusablecellswithidentifier快速执行此操作,但也许在这个问题上有一些解决方法?

reusability uitableview ios swift

5
推荐指数
1
解决办法
1万
查看次数