小编WeN*_*ers的帖子

领域特定语言(DSL)对Common Programmer有害吗?

我最近一直在钻研F#和新的DSL内容,就像在Microsoft SQL Server建模CTP中那样,并且有一些顾虑.

对于熟练的程序员来说,这个新想法是否会变坏?

代码会变得愚蠢吗?

我知道我听起来像一个luddite,但这确实让我担心,经过多年的时间练习我的手艺,现在可能会被天才从内部凿沉.

我很害怕,非常害怕.

我现在是否会被困在一个只针对DSL编程的工作中,因此我工作的每一份工作,我都必须学习一个基于框架(.net Java)的全新DSL,我将被允许触摸某些部分.

我不认为这个世界已经为DSL做好了准备,但销售宣传却震耳欲聋!

dsl

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

ExpandoObject(动态)我最好的朋友还是我最新的敌人?

是的我知道它不应该被滥用,并且C#主要用作静态语言.但是,如果你可以只是弄脏一些代码,在python风格中,或者创建一些动态的hicky,那么认真的人,不是吗?

花了一段时间喜欢蟒蛇的动力,我的脑子正在加班加点,c#是通过后门走向黑暗的一面吗?

静态类型的参数是否有明显的加法?

当我们都是成年人时,减少单位测试的论点有点愚蠢吗?

或者,动力学的增加破坏了强静态类型和精心设计的语言?

c#

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

在F#中使用哪个,抽象类或接口?

来自C#背景的F#.

在C#中,决定何时使用接口以及何时使用抽象类有明显的区别.在F#中,我看到两个模糊几乎合二为一.据我所知,就CLR而言,在F#中就c#做了同样的事情,但在使用F#进行编程时,"最佳实践"是什么?

我应该完全避免类继承吗?

f#

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

如果软件组件内部尽可能避免线程?

我最近一直在研究代码,特别是在内部使用线程的面向组件的代码.这是一个不好的做法.我看到的代码来自一个F#示例,它展示了使用基于事件的编程技术.我不能在版权侵权的情况下发布代码,但它确实启动了自己的线程.这被认为是不好的做法,或者自己编写的代码是否可以完全控制线程创建是否可行.我确实指出,这段代码不是一个可视化组件,而且非常"从头开始构建".

在线程有用的组件创建的最佳实践是什么?

我对此完全是语言不可知的,f#示例可能是在c#或python中.

我担心缺乏对组件运行时间和资源占用的控制,这个例子只是实现了另一个线程,但据我所知,没有什么能阻止这种类型的设计产生尽可能多的线程,到你的程序允许的极限.

我确实想过像对象注入这样的方法,所以第四,但线程很奇怪,因为它们是从组件角度来看纯粹的"动作"而不是"模型,状态,声明"

任何帮助都会很棒.

c# f# multithreading components design-patterns

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

将memoryStream作为字符串返回

这个陈述有什么问题?

return Encoding.ASCII.GetString(memoryStream.GetBuffer(), 0, memoryStream.Length)
Run Code Online (Sandbox Code Playgroud)

我知道Dispose模式,检查了底层的memoryStream,发现在dispose中没有发生任何事情.那么为什么我不允许我的一个开发人员这样做呢.

返回后,memoryStream超出范围.

目的是使代码简洁而不创建不需要的引用,希望尽快让垃圾收集器启动.

它只是让我感到唠叨,我觉得memoryStream让派对失败了,与其他流做的相比,以及为什么他们实现了IDispose.

有人可以给我一个很好的理由不允许上面的代码.我对代码不正确但需要一些备份感到胆怯.:)

****WeNeedAnswers****:编辑请注意由于Jon Skeets输入代码已经改变,但这个问题主要核心仍然相关.

我的原始和容易出错的代码是:

return new ASCIIEncoding().GetString(memoryStream.ToArray());
Run Code Online (Sandbox Code Playgroud)

c#

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

标签 统计

c# ×3

f# ×2

components ×1

design-patterns ×1

dsl ×1

multithreading ×1