您是否知道设计良好的开源应用程序对分析具有指导意义?
当然这个问题与其他帖子严格相关,但我对用Python编写的应用程序特别感兴趣.
假设我有以下程序:
namespace ReflectionTest
{
public class Example
{
private string field;
public void MethodOne() { }
public void MethodTwo() { }
public string Property
{
get { return field; }
set { this.field = value; }
}
}
class Program
{
static void Main(string[] args)
{
iterate(typeof(Example));
Console.ReadLine();
}
public static void iterate(Type type)
{
MethodInfo[] methods = type.GetMethods(
BindingFlags.DeclaredOnly |
BindingFlags.Instance |
BindingFlags.Public);
foreach (MethodInfo mi in methods)
{
Console.WriteLine(mi.Name);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行程序时,我得到以下输出:
MethodOne MethodTwo get_Property set_Property …
我有一个轨道应用程序,已经有点牵引力,但我有一个严重的头痛要处理.这是一种基本的资产管理应用程序 - 用户上传他们的照片,.pdfs,视频等,系统允许他们管理资产的呈现方式.
我开始使用相当标准的rails视图 - 这是由rails生成的 - 为index.html.erb.我有一个部分为每个资产呈现缩略图,如下所示:
<div id="preview"> </div>
Run Code Online (Sandbox Code Playgroud)
我想要的是缩略图是可点击的(很容易)但是当用户点击该按钮时,div的内容将被填充,好吧,基本上是edit.html.erb,但我猜它需要作为一个部分完成.我已经用直接的javascript管理了这个.
我可以访问新版"Agile Development on Rails"一书的出版前版本,任何人都可以通过该出版社获得该版本,但是关于AJAX的章节非常小,并且假定我拥有的这些东西比我更多,这就是我第一次涉足javascript和rails.
更新:回答"问题是什么"'回答',虽然我认为很清楚:
我需要在缩略图的部分内容中点击它来将编辑表单加载到div中?
如果我创建仅在单个线程中使用的类,我是否应该使它们成为线程安全的,即使我现在不需要它?可能会发生这种情况,我后来在多个线程中使用这个类,那时我可能会遇到竞争条件,如果我没有首先使用类线程安全的话,可能很难找到它们.或者我应该让这个类不是线程安全的,以获得更好的性能?但过早的优化是邪恶的.
不同的问题:如果需要,我应该让我的类线程安全(如果在多个线程中使用,否则不是)或者我应该优化这个问题然后需要(如果我看到同步占用处理时间的一个重要部分)?
如果我选择其中一种方法,是否有减少缺点的方法?或存在第三种可能性,我应该使用?
编辑:我说出这个问题出现在我脑海中的原因.在我们公司,我们编写了一个非常简单的用户管理,将数据写入属性文件.我在一个网络应用程序中使用它,经过一些工作后我得到了奇怪的错误,用户管理忘记了用户的属性(包括名称和密码)和角色.这非常令人讨厌但不能始终如一地重现,所以我认为这是竞争条件.由于我同步了所有从磁盘上读取和写入的方法,因此问题就消失了.所以我想,如果我们首先用同步编写了类,那么我可能已经避免了所有的麻烦了?
编辑2:当我查看实用程序员的提示时,我看到了提示#41:始终为并发设计.这并不是说所有代码都应该是线程安全的,但它说设计应该考虑到并发性.
我是Windows编程的新手,在阅读了Petzold的书后,我想知道:
使用TCHAR
类型和_T()
函数来声明字符串或者我是否应该在新代码中使用wchar_t
和L""
字符串仍然是一种好习惯?
我将只针对Windows 2000及以上版本,我的代码将从一开始就是i18n.
我正在尝试制作一个简单的二十一点程序.可悲的是,我现在遇到了问题,产生了一副牌.
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<char> deck;
char suit[] = {'h','d','c','s'};
char card[] = {'2','3','4','5','6','7','8','9','10','J','Q','K','A'};
for (int j=0; j<13; j++) {
for (int i=0; i<4; i++) {
deck.push_back(card[j] suit[i]);
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我知道我的问题始于我试图将值'10'分配给char.显然我无法编译,但我确定当我尝试将卡值分配给矢量卡时我也会收到错误,因为我使用了变量类型'char'.知道使用什么样的变量类型似乎在扼杀我.还有'deck.push_back(card [j] suit [i]);' 是卡和套装相结合的正确代码,还是你必须在卡[j]和套装[i]之间放一些东西?如果你们中的任何人能够带领我朝着正确的方向前进,我将不胜感激.另外作为一个侧面说明,这是家庭作业的一部分,所以请不要只给我整个代码块.谢谢你的帮助.
我在SharePoint中遇到的最大挑战之一是它不能很好地适应典型的项目环境,而这种环境至少包含开发和生产环境.我遇到的问题是内容和列表紧密耦合,如果不对生产环境执行内容冻结,就很难执行设计更改.例如,如果我有一个包含计算列的列表并希望添加一些新功能,我将不得不在生产服务器上执行内容冻结,从生产服务器创建列表模板(包括内容),将该列表还原到开发环境,进行我的更改,然后反转列表模板过程.对于页面以及SharePoint中的任何其他内容也是如此.
你们中的一些其他SharePoint开发人员如何处理这个限制?
免责声明:我使用System.Linq.Expressions中的表达式解决了这个问题,但我仍然在寻找更好/更简单的方法.
考虑以下情况:
var query =
from c in db.Customers
where (c.ContactFirstName.Contains("BlackListed") ||
c.ContactLastName.Contains("BlackListed") ||
c.Address.Contains("BlackListed"))
select c;
Run Code Online (Sandbox Code Playgroud)
需要根据列入黑名单的术语检查的列/属性仅在运行时可用.如何生成这个动态where子句?
另一个复杂因素是Queryable集合(上面的db.Customers)被输入到'Customer'基类的Queryable中(比如'Person'),因此不能选择编写c.Address.
我将项目添加到当前使用TFS进行源代码管理的现有解决方案中,但由于某种原因,我无法检入新项目.当我查看挂起的更改时,新项目中的所有文件都不会显示.所有文件都没有加号(对于新文件).我做错了什么?我如何解决它?是时候办理登机手续了.
我最近在谷歌测试博客中偶然发现了关于编写更多可测试代码的指南.在此之前,我与作者达成了一致意见:
优先于条件的多态性:如果你看到一个switch语句,你应该考虑多态性.如果您在班级的许多地方看到相同的if条件,您应该再次考虑多态性.多态性会将您的复杂类分解为几个较小的简单类,这些类可以清楚地定义代码的哪些部分相关并一起执行.这有助于测试,因为更简单/更小的类更容易测试.
我根本无法绕过那个.我可以理解使用多态而不是RTTI(或DIY-RTTI,视情况而定),但这看起来像是一个广泛的陈述,我无法想象它实际上在生产代码中被有效使用.在我看来,更容易为具有switch语句的方法添加其他测试用例,而不是将代码分解为几十个单独的类.
此外,我的印象是多态可能导致各种其他微妙的错误和设计问题,所以我很想知道这里的权衡是否值得.有人可以向我解释这个测试指南的确切含义吗?
c++ ×3
.net ×2
ajax ×1
architecture ×1
c ×1
concurrency ×1
dynamic-linq ×1
java ×1
javascript ×1
linq-to-sql ×1
oop ×1
open-source ×1
partials ×1
performance ×1
polymorphism ×1
python ×1
reflection ×1
sharepoint ×1
tdd ×1
tfs ×1
unicode ×1
views ×1
wchar-t ×1
windows ×1