标签: conventions

使用共享包部署python应用程序

我正在考虑如何安排一个部署的python应用程序,它将具有

  1. 位于/ usr/bin /中的可执行脚本,它将为实现的功能提供CLI
  2. 安装在当前site-packages目录所在的库.

现在,我目前在源代码中有以下目录结构:

foo.py
foo/
  __init__.py
  ...
Run Code Online (Sandbox Code Playgroud)

我想这不是最好的做事方式.在开发过程中,一切都按预期工作,但是在部署时,foo.py中的"from foo import FooObject"代码似乎试图导入foo.py本身,这不是我正在寻找的行为.

所以问题是编排这样的情况的标准做法是什么?我能想到的一件事是,在安装时,将foo.py重命名为foo,这会阻止它自动导入,但这看起来相当尴尬......

我认为问题的另一部分是这是一个命名挑战.也许调用可执行脚本foo-bin.py?

python naming conventions package deploying

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

为什么IoC/DI容器称为"容器"?

我只想了解标签"容器"的来源.谁知道?

似乎很多东西都可以称为"容器".

dependency-injection conventions naming-conventions inversion-of-control

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

将大量代码放在包含PInvoke内容的属性的get函数中是不好的做法?

我知道一个令人困惑的标题.让我解释.

我必须编组一个结构数组,然后将其转换为类数组(传统兼容性).例如

public class InnerClass {}

public class OuterClass { private InnerClass[] innerClasses; }


public struct InnerStruct {
   // Data
}

private static buildInnerClass( InnerStruct i );

public struct OuterStruct {
   private int _numInnerStructs;
   private IntPtr _innerStructs;
   // Other members

   public InnerClass[] InnerClasses {
      get {
             InnerClass[] ret = new InnerClass[_numInnerStructs];

             var structSize = Marshal.SizeOf(typeof(InnerStruct));
             var ptr = _innerStructs;

             for (int i = 0; i < _numInnerStructs; i++)
             {
                InnerStruct innerStruct = (InnerStruct)Marshal.PtrToStructure(
                                          ptr, typeof(InnerStruct));
                ret[i] = buildInnerClass(innerStruct);
                ptr = …
Run Code Online (Sandbox Code Playgroud)

.net c# pinvoke properties conventions

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

Java体系结构 - 关于ActionListener约定的问题

我正在创建一个用户界面,显示图形和操作图形.该类扩展JFrame实现了ActionListener.然后,ActionListener根据操作调用不同的类来操作图形.这种方法很有效,而班级的ActionListeners很少; 然而,现在这堂课变得难以管理.

我知道,为了封装,最好在用户界面类中使用ActionListener,因为它需要访问接口的非静态组件.但是,封装和可读性之间似乎存在冲突.

我建议将类打破为接口的一个类,为ActionListener打破第二个类并静态访问接口组件.我想知道的是,这是遵循基本的设计惯例吗?并且,如果这是一种可接受的方法,您会将主类放在用户界面类或ActionListener类中吗?

java architecture swing conventions

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

.Net 4.0中名称空间声明的错误或新约定

Visual Studio 2010,.Net 4.0

我正在生成一些域服务类,这就是visual studio包含命名空间的方式:

namespace MyCoolProject.Web.Services
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Data.Linq;
    using System.Linq;
    using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Server;
    using Columbus.Web.Data;
    using Microsoft.ServiceModel.DomainServices.LinqToSql;


    // Implements application logic using the JanDoetsDataContext context.
    // TODO: Add your application logic to these methods or in additional methods.
    // TODO: Wire up authentication (Windows/ASP.NET Forms) and uncomment the following to disable anonymous access
    // Also consider adding roles to restrict access as appropriate.
    // [RequiresAuthentication]
    [EnableClientAccess()]
    public class …
Run Code Online (Sandbox Code Playgroud)

.net namespaces conventions

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

检查原始是否未初始化的简单方法?

在C中,根据我的理解,像int和float这样的原语在首次声明时被初始化为0.如果声明包含基元的结构,则同样如此.我很难找到一种简单的方法来检查原语是否未初始化.

例如,假设我有一个在头文件中声明的int类型的实例变量.我需要在我的实现代码中使用这个变量,对我来说知道这个值是否已被初始化是很重要的.检查零不是一个真正的选项,因为如果该值确实应该为零,那么我已经重新初始化了一个已经更改的值.检查NULL也不起作用,因为它不是指针.

我提出的唯一解决方案是将第一段可执行代码中的变量初始化为某些值,我知道这些值永远不会与程序的其余部分相关.例如,如果值永远不应低于零,那么我将其初始化为-1以知道它尚未初始化.这看起来真的很苛刻,如果可以赋值变量的值范围发生变化,可能会导致问题.

对这类问题有什么有趣的建议吗?提前致谢!

c methods conventions

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

事件处理程序/提升程序代码段

我想听听下面代码片段的意见.有什么可以改进的吗?事件处理程序/提升者是否遵循最佳做法?我知道在同一个类中处理和引发事件并没有那么有用,但这只是一个片段.

public class MyControl
{
    public MyControl()
    {
        this.LogWritten += this.HandleMyControlLogWritten;
    }

    // Event handler
    void HandleMyControlLogWritten(object sender, EventArgs e)
    {
    }

    // Event object
    public event Action<object, EventArgs> LogWritten;

    // Event raiser
    protected virtual void OnLogWritten(EventArgs e)
    {
        if (this.LogWritten != null)
        {
            this.LogWritten(this, e);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# events conventions

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

使用属性与计算更改值的方法

是否存在使用属性来计算通话值的约定?例如,如果我的类包含一个整数列表,并且我有一个属性Average,那么当从列表中添加/删除/修改整数时,平均值可能会发生变化,这样做会是这样的:

    private int? _ave = null;
    public int Average
    {
        get
        {
            if (_ave == null )
            {
                double accum = 0;
                foreach (int i in myList)
                {
                    accum += i;
                }
                _ave = accum / myList.Count;
                return (int)_ave;
            }
            else
            {
                return (int)_ave;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果以可能改变平均值的方式修改myList,则将_ave设置为null

对平均方法调用有任何常规优势/劣势吗?

我基本上只是想知道这个约定是什么,因为我正在创建一个具有可能只计算一次的特定属性的类.我喜欢访问这些属性的类的想法,以便能够访问属性与方法(因为它似乎更可读IMO,将平均值视为属性而不是方法),但我可以看到这里可能会有问题,特别是在确保_ave被适当地设置为null时.

c# coding-style conventions

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

代码样式:"隐藏"数据类型(Java)

我正在研究一组课程来表示音符,小节,节奏等.当然,我将不得不处理最好用分数表示的时间签名(如4/4,3/4等).

我想知道什么是更好的风格.使用Bar的构造函数包含Fraction-object或仅包含两个int作为时间签名.

public Bar(Fraction timeSignature) {
    this.timeSignature = timeSignature;
}
Run Code Online (Sandbox Code Playgroud)

要么:

public Bar (int num, int den) {
    timeSignature = new Fraction(num, den);
}
Run Code Online (Sandbox Code Playgroud)

我的意思是......我可以同时拥有这两个但我应该在申请中选择哪一个?是否有"更好"的风格?

谢谢你的想法!

java types conventions

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

是否将'0'减去char以转换为int bad practice?

我期待一个单位整数输入,并且如果不是这样的话,已经有错误处理.通过简单地将输入字符减去"0"以将其"转换"为整数,是否有任何潜在的无法预料的后果?

我不是在寻找关于可读性的观点或者更常用的观点(尽管它们不会作为答案的延伸而受到伤害),而只是它是否是一种可靠的转换形式.如果我问用户输入0到9之间的整数,在那里,其中有可以输入任何情况下input = input-'0' 处理,但不?

c input conventions digits

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