我有一个带有一些函数的类,它们实际上只是'helper'方法,客户端代码可以用其他公共访问器属性/方法来完成,我还没有决定是否应该将它们定义为具有getter的属性,实例将实例作为参数的方法或静态方法.另外,我还从类中提取了一个接口,除了构造之外,它几乎用在任何地方,以允许我的代码使用针对接口实现的任何类.
问题是,从设计的角度来看哪个最好?例如,作为从此类获取首字母的方法:
class Person : IPerson {
private string name;
public string Name { get { return this.name; } }
// Property with getter
public string Initial { get { return this.name.Substring(0,1); } }
// Instance method
public string GetInitial { return this.name.Substring(0,1); }
// Static method
public static string GetInitial(IPerson person) {
return person.Name.Substring(0,1);
}
}
Run Code Online (Sandbox Code Playgroud)
该属性适用于更短,更易读的客户端代码,但是需要任何针对IPerson实现的人编写自己的实现,就像实例方法一样.
静态方法意味着实现类不需要自己编写,我的代码可以保证如何根据名称确定初始化,但这意味着它不能在接口上,而客户端代码更冗长一点.
它是否仅仅归结为是否允许实现类来指定如何计算辅助方法是一个好主意?
编辑:轻微一点,为什么不让SO添加最佳实践标签?
如果你拿出脚手架功能来创建模型/控制器,以及为你创建CRUD页面,还是在轨道上的红宝石还是比django更快上市吗?
如果你带走那一步似乎非常相似......(尽管我相信django具有类似的自动生成能力)
我正在阅读rails网站上的入门指南,当它介绍脚手架功能时,它说许多人更喜欢手工编码这些类型的区域.
如何设置类似facebook的通知系统: - userA将消息写入userB - 数据库上的监听器将消息路由到userB - 在userB界面上,消息立即出现
我怎么能在PHP中这样做?
非常感谢你,
问候
我正在寻找一个将列表划分为固定大小的子列表的功能,这正是Google Collections库中的Lists.partition所做的.我在Scala Collections API中找不到这样的方法.我错过了什么吗?
除非我疯了if None not in x并且if not None in x是等同的.有首选版本吗?我想None not in更多的是英语,因此更加pythonic,但not None in更像是其他语言语法.有首选版本吗?
我正在尝试使用包含在ViewModel中的特定batchId参数转到视图,选择要上载的文件,获取上载的文件并将文件数据与关联的BatchId值一起存储在数据库中.
提交表单时,我不知道如何取回viewmodel和PostedFileBase,以便我可以获取BatchId值.
我需要batchId值将它与我存储在数据库中的数据相关联.
我的控制器中有以下操作方法,允许通过文件上载和导入将新客户添加到指定的批处理:
public ActionResult AddCustomers(int batchId)
{
var viewModel = new AddCustomersViewModel() { BatchId = batchId, //other view model properties };
return View(viewModel);
}
Run Code Online (Sandbox Code Playgroud)
我的视图是强类型的ViewModel:
Inherits="System.Web.Mvc.ViewPage<TestExcelImport.Areas.Admin.ViewModels.AddCustomersViewModel>
Run Code Online (Sandbox Code Playgroud)
并具有以下文件上传:
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>AddCustomers Batch ID : <%:Model.BatchId %></h2>
<form action="/Admin/Dashboard/AddCustomers" enctype="multipart/form-data" method="post">
<input type="file" id="SourceFile" name="SourceFile" />
<br />
<input type="submit" value="Send" name="btnUpload" id="Submit1" />
</form>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
我的HttpPost Action方法定义为:
[HttpPost]
public ActionResult AddCustomers(HttpPostedFileBase SourceFile)
{
//int batchId = ??? HOW DO I Get the BatchId
int fileLength = SourceFile.ContentLength; …Run Code Online (Sandbox Code Playgroud) 在下面的HTML标记中,我需要做什么才能获得文本"这是什么?" 被定位在图像下面?最初,我将文本放在<p>标签中,但是,虽然文本位置相同,但我丢失了所需的超链接行为.
谢谢!
<div class="HorizontallyCentered">
<a href="qr.aspx">
<img alt="Image of JA10" src="files/ja10.png" height="150" width="150" />
What is this?
</a>
</div>
Run Code Online (Sandbox Code Playgroud) 我在这里完全失败了.我的客户在内部使用IE6,由于某种原因,即使是最简单的jQuery也不起作用.这是不起作用的代码.
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title></title>
<script type="text/javascript" src="js/jquery-1.4.2.js" />
<script type="text/javascript">
jQuery(function() {
alert("alert from jQuery");
});
$(document).ready(function() {
alert("alert from doc.ready");
});
</script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我知道IE6存在很多问题.我尝试了一些我在互联网上找到的解决方法(比如将脚本放在页面底部,删除类型attr)并且没有骰子.任何帮助将不胜感激.
如果已经存在Mercurial存储库会发生什么
/User/peter/development
Run Code Online (Sandbox Code Playgroud)
现在我想为其添加一个存储库
/User/peter
Run Code Online (Sandbox Code Playgroud)
因为我也想版本.bashrc,.profile或者可能/User/peter/notes也是如此.将现有存储库上方的存储库创建为Mercurial会产生冲突吗?