最近几个月我对编码katas很感兴趣.我相信它们是磨练我的编程技巧和提高我在工作中编写的代码质量的好方法.
Katas可以在很多地方找到.喜欢..
http://schuchert.wikispaces.com/Katas
我发现这些是Katas的优秀资料库......我对其中一些人的尝试得到了极大的回报.
但是,我觉得到目前为止我见过的所有卡塔都有一个短暂的来临.他们似乎都不允许我练习重构坏代码.第一次学习如何编写干净的代码真是太棒了...但在我目前的工作中,我没有太多机会编写新代码.相反,我经常与遗留代码作斗争并试图弄清楚如何重构模块,消除依赖关系并减少耦合.
因此,我正在寻找一些可以用来磨练我重构遗留代码并将其转换为干净代码的技能的Katas.
有谁知道任何已存在的?我知道我在工作的时候会接受很多练习...但是我想磨练自己的技能,以便能够快速地看到如何分离依赖关系,并在课堂上分离关注点做得太多了.
从表单传入的值创建和填充Object的最佳方法是什么?
例如,如果我有一个Car类,其属性为Color,Model,Make,Year和方法Save,它将插入或更新记录.
然后,我有一个表单,其中包含所有这些值的字段,并提交.我想创建一个带有已发布值的类Car的实例,然后调用Save方法.一切都很好.
但是,将已发布值分配给对象内部属性的最佳方法是什么.假设这是一个简化的场景,实际情况会有更多属性,使得单个Set调用啰嗦.
是否最好只为每个调用Set方法?或者将数组传递给方法(或构造函数),然后调用Set方法?或者其他一些方式?
对于最佳实践的任何建议表示赞赏
干杯斯图尔特
我想max将Winforms NumericUpDown控件中的值设置为infinity.我怎样才能做到这一点?
我需要使用linq克隆行.我找到了这个方法:
public static T Clone<T>(this T source)
{
var dcs = new System.Runtime.Serialization
.DataContractSerializer(typeof(T));
using (var ms = new System.IO.MemoryStream())
{
dcs.WriteObject(ms, source);
ms.Seek(0, System.IO.SeekOrigin.Begin);
return (T)dcs.ReadObject(ms);
}
}
Run Code Online (Sandbox Code Playgroud)
但是当尝试克隆行时,比如db1.Persons.First().Clone();
我得到这个例外:"类型'TestLinq.PersonAddress'的对象图包含周期,如果禁用参考跟踪,则无法序列化."
注意:我的表包含1个主键,1个唯一索引包含3个字段
能帮帮我吧
谢谢
哈米德
我有一个使用任意数量的成员资格提供者的.Net应用程序.我不会理解这些原因,但我不希望这些原因得到预先配置,但我想以编程方式创建和添加它们.反正有没有这样做?我没有创建提供程序的问题,但Membership.Providers是readonly,所以我无法添加它们.
在PHP中使用套接字通信时,是否需要确认在发送每条消息后是否已成功接收消息?或者传输层(TCP)是否负责错误检测和纠正,确保成功传递任何已发送的消息?
这种方法究竟做了什么?我在想它可能会进入一个单独的线程,但是在正确的线程上处理控制更新等事情.但现在我开始认为它可能只是在UI线程上运行.这意味着从UI调用控件上的BeginInvoke与调用Invoke几乎相同?要么?
我正在寻找最好的解决方案,这将使我能够将2个用户(此时只有2个)的实时视频/音频会议整合到闪存游戏平台中.视频聊天不仅仅是一个额外的功能,它是主要功能.
我主要关注开源实现或者我自己能够实现的东西,但如果它们正是我需要的话,它会考虑商业产品.
以下是我看过的一些事情,但到目前为止,我没有发现它们中的任何一个足够好:
Flash Player 10的P2P功能听起来很有前景,但我知道Adobe没有发布有关RTMFP协议的任何信息,并且此时没有支持它的商业服务器.
通过闪存服务器(而不是p2p)实时流式传输所有视频/音频,但根据我的个人经验,您无法顺利进行对话.
我认为TokBox使用这种方法
Java applet也是一种可能的解决方案(执行p2p),但我不认为在这一点上将它们组合在游戏中并且需要用户授权它们将是一个很好而优雅的解决方案.顺便说一句,我找不到任何有用的实现.所以,如果你知道,我会调查他们.
谷歌Gmail视频聊天使用自定义(和专有)浏览器插件,该插件执行p2p并将视频/音频流式传输到Flash播放器.这是一个可能的解决方案,但我宁愿不在此阶段实现整个p2p协议栈+浏览器插件,而是专注于游戏本身的其他方面.我认为他们正在使用类似于Jingle的基于XMPP的协议,他们发布了一个Jingle librarby,但没有视频实现.
编辑:回应Branden:
我知道Adobe Stratus.Stratus是一个测试版托管的集合服务,可帮助在Flash Player端点(RTMFP服务器)之间建立通信.
Stratus的当前版本是预发行版,仅用于评估目的.该服务不是最终的.
无法保证该服务将来会继续存在或任何有关未来成本的信息.
这就是我不认为它可以用作商业解决方案的原因.至少还没有.
我很感激你的建议和意见.谢谢!
如何在Mac OS X中创建指向目录的硬链接?
此功能已添加到Mac OS X v10.5(Leopard)的文件系统中(用于时间机器),但我找不到有关从命令行实际使用它的任何信息.
在Java中,我有一个java.util.Properties对象,我希望获得另一个具有相同对的对象,但是键转换为值,反之亦然.
如果存在碰撞(即有两个相等的值),则只需选择任意键作为值.
最简单的方法是什么?
随意使用库,公共集合或其他任何东西.
c# ×3
php ×2
winforms ×2
.net ×1
conference ×1
flash ×1
hardlink ×1
java ×1
legacy-code ×1
linq-to-sql ×1
macos ×1
oop ×1
p2p ×1
properties ×1
refactoring ×1
sockets ×1
streaming ×1
validation ×1
video ×1
webserver ×1