小编khe*_*ang的帖子

方法参数困境

在创建课程时我总是停下来.我是建筑的中间人,所以请耐心等待.这是我的困境.我最终在一个课堂上,我必须问自己,"当我能从类的属性或私有支持领域得到我需要的东西时,这个方法是否需要参数?".

现在对于公共方法,很明显你应该有参数,因为有人会消耗你的类并使用这些方法,无论它们是在实例类还是静态类中.这场辩论与公共方法无关,因为这对我来说是显而易见的.如果你的类中有一个公共方法,即使让我们说你可以从该类中的属性或私有字段获得所需的值之一,而不是要求该方法的参数并使用该参数,应该仍然需要参数并使用参数,或者至少在你指定一些参数时不要计算它们.至少这是我查看公共方法的方式,因为谁知道其他人如何使用该方法,并且他们需要知道需要传递什么,并且他们需要将实际数据传递给方法,因为它们在您的课外.

例如,我正在创建和使用私有方法或类似的东西.让我们说我创建了一个自定义控件(.cs).它的工作是运行一系列方法,我已经打破了这个控件的逻辑,并创建了一些HTML字符串输出到浏览器.好吧,我创建了一个公共属性,这样任何使用此控件的人都可以为它提供某个对象.而且某个对象是我班级中有一半的方法用来帮助生成HTML.因为它是一个属性,我的自定义类中的任何方法都可以使用它.所以它完全绕过了在某些方法中创建参数的任何需要,因为我可以从属性中获取它.但后来我开始创建一个非常多的无参数方法,因为我从后备字段或后备字段和属性的组合中获取对象.或者我可能只是从一些事情中得到它们我能够在这个课程中得到我需要的其他方法吗?但是有些东西对你说不,那个坏人,你确实需要参数偶尔一次......至少是参数的组合,并在你的方法中使用一些支持字段或属性等,但并不总是折扣参数即使这些参数可能是一些内部传递给它(领域或属性).但是,如果我要将内部传递为params,那么只是访问和使用那些字段或属性而不是通过方法作为params而是直接在方法本身内部之间的细微差别.

但这让我感到困扰,因为那时我怀疑为什么我需要方法参数,以便在其他地方获取值.

有人可以在这里解释这条细线,并帮助我得出结论在你的方法或属性中使用大量支持字段而不是你在方法中指定的一些参数之间的界限.尽管有些参数仍然可以通过另一个方法调用后备字段或属性的值?

我希望这能让人感觉到任何意义,但我不能成为唯一遇到这种困境的人.也许我是唯一一个想到这个问题的人,我认为我不知道.但是我个人使用OOP的主要问题是有很多方法可以获得你需要的东西(构造函数,属性,支持字段,方法).

c#

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

给定角度(以度为单位),如何使用x和y找到行程的逻辑?(数学困境)

我正在用HTML5画布制作一个简单的游戏,它涉及驾驶一辆小汽车.

向上箭头移动汽车,左右箭头操纵它.

我有旋转排序,但现在它需要在按住向上键时根据它所处的角度移动其x和y位置.

例:

角度为0,向上箭头仅影响y坐标.

角度为45,向上箭头将以相同的速度影响x和y坐标.

如果说角度是32,我可以使用什么逻辑?

math html5 canvas

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

防止游戏!更改js文件后编译的框架

我正在使用Play Framework开发应用程序.每当我对JavaScript文件进行任何更改时,Play都会启动编译.我希望通过将它们移动到public/javascripts文件夹来防止这种情况,但行为是一样的.我之所以这样做,是为了加快我的开发过程.编译时间很长,它让我慢下来,因为我经常在浏览器中查看我的工作结果.

更改js文件后有没有办法阻止编译?

javascript compilation playframework

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

DirectInput C++、方向盘和 DIVIRTUAL_DRIVING_RACE 访问

我是直接输入的新手。我设法将方向盘初始化为DI8DEVCLASS_GAMECTRL设备并获取所有数据。现在踏板有点麻烦,因为它们共享一个轴(加速是 Y 轴正值,刹车是 Y 轴负值,意味着如果两者都按下,则值为 0)

我如何通过以下方式以良好的方式访问以下值DirectInput

  • DIAXIS_DRIVINGR_STEER
  • DIAXIS_DRIVINGR_ACCELERATE
  • DIAXIS_DRIVINGR_BRAKE

c++ directinput joystick

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

如何检查进程是否被supervisor重启?

更准确地说:

我有一个负责动态儿童数量的主管。我希望它在第一次添加和启动给定子项时使用不同的 init 函数,而不是稍后发生的所有重新启动。或者,如果进程可以发现它已重新启动,我可以使用相同的函数。

erlang

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

实体框架:在所有迁移之前运行代码

我想迁移数据库中的存储过程和视图。由于我总是迁移到最新版本,因此一种源代码控制友好的方法是在迁移过程中删除/重新创建所有过程/视图(使用这种方法,每个过程有一个文件,而不是每个版本一个)。

由于旧的过程/函数/视图可能与新的架构更改不兼容,我想在所有迁移之前进行删除,然后再进行创建。

以前我使用了定制的 FluentMigrator,但现在我正在研究实体框架代码优先迁移。我看到我可以用来Seed在所有迁移后始终运行代码。

有什么我可以用来所有迁移之前始终运行代码的东西吗?

.net c# entity-framework database-migration entity-framework-migrations

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

PHP webservice困境

我需要为我的网站创建一个Web服务,这个Web服务将允许所有注册用户访问从系统保存的所有数据.

我有不同类型的数据,如文档(txt格式),excel表(csv)等...

现在我阅读了大量有关如何构建Web服务的文章,我发现了以下不同的选项:

  1. WSDL
  2. 休息
  3. 肥皂
  4. 基于HTTP的API

我看到SOAP和WSDL很复杂,但它使用了很多,REST和HTTP非常简单,但很少有人使用它.

我的网络服务应该更容易让用户使用吗?还是开发者?或者我应该发展两者?

php web-services

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

jQuery插件最佳实践

我是jQuery插件开发的新手,我很有趣地知道,下面列出的两种方式有什么区别?什么是正确的方法呢?

(function($){
  $.myplugin = {
    // plugin code
  };
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

第二个:

(function($){
  $.fn.myPlugin = function() {
    // plugin code 
  };
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

jquery jquery-plugins

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

我应该同时使用NotNull和ContractAnnotation("null => halt")吗?

看来,NotNullContractAnnotation("key: null => halt")在其上的R·效果相当类似.有什么东西我错过了吗?我应该经常同时申请吗?

resharper null design-by-contract static-analysis

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

如何使用Autofac来解析Nancy创建的子生命周期范围中的类型的每个请求依赖项的实例

我们在Windows服务中托管了多个应用程序,这些应用程序自托管Nancy端点,以便公开有关应用程序操作的检测.

我们使用Autofac作为我们的IOC.几个存储库在所有应用程序共享的核心DLL中注册到根容器中; 然后使用从中导出的引导程序将此容器作为其容器传递给Nancy Nancy.Autofac.Bootstrapper.

我们发现,当Nancy收到Web请求时,它会从根容器中解析对存储库的请求,这导致内存被非垃圾收集器消耗,IDisposable因为根容器不会超出范围(它具有Windows服务的生命周期).这导致服务"泄漏"内存.

然后我们切换到一个模型,我们在Nancy bootstrapper中使用InstancePerRequest重写ConfigureRequestContainer()方法添加了存储库的注册:

protected override void ConfigureRequestContainer(ILifetimeScope container, NancyContext context)
{
    base.ConfigureRequestContainer(container, context);
    PerRequestContainerBuilder().Update(container.ComponentRegistry);
}

private static ContainerBuilder PerRequestContainerBuilder()
{
    var builder = new ContainerBuilder();

    // Dependency for repository
    builder.RegisterType<SystemDateTimeProvider>().InstancePerRequest().As<IDateTimeProvider>();

    // Repository
    builder.RegisterType<BookmarkRepository>().InstancePerRequest().As<IBookmarkRepository>();

    return builder;
}
Run Code Online (Sandbox Code Playgroud)

我们还覆盖了CreateRequestContainer()使用标记创建请求容器的方法MatchingScopeLifetimeTags.RequestLifetimeScopeTag.

protected override ILifetimeScope CreateRequestContainer(NancyContext context)
{
     return ApplicationContainer.BeginLifetimeScope(MatchingScopeLifetimeTags.RequestLifetimeScopeTag);
}
Run Code Online (Sandbox Code Playgroud)

这似乎已经解决了IDisposable没有被处理的问题- 子请求容器被放置在Web请求管道的末端,并且由它解析的对象也被处理并最终被垃圾收集.

我们的问题是,这似乎是将存储库的实现细节泄漏到服务中,因为我们不仅需要注册存储库,ConfigureRequestContainer()还要注册存储库所需的任何其他对象,即如果我们想要更改存储库的实现,我们必须"遍历依赖链"以使用它来注册每个服务中的所需对象 - 这似乎是错误的.

有没有办法让我们可以让Autofac从根容器中解析存储库的支持对象,但是将注册信息保存在Web请求容器的范围内?或者有没有办法在创建根容器时自动将现有注册从子容器复制到子容器中?

c# dependency-injection autofac nancy

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