自从我在软件公司获得经验以来,我发现很难容忍编码结构不整齐,没有任何形式的架构或美观或清晰,无论它是否有效,即它应该做什么.
我发现我总是陷入这样的重构代码中,有时"自费"是我的舒适与生产力两难的地方.
处理您在经验中继承的糟糕编写代码的最快方法是什么?写你的或封装/重构什么,耗时?
因此,定义DLL的导出/导入的常见(至少VS 2005状态)方式是:
#ifdef MY_EXPORTS
#define MY_API __declspec(dllexport)
#else
#define MY_API __declspec(dllimport)
#endif
class MY_API MyClass {
...
};
Run Code Online (Sandbox Code Playgroud)
如果我只是将我的代码构建为DLL,那么这很有用.但是,我想选择使用静态库或DLL.现在一个明显(但可怕)的解决方案是复制所有代码,删除DLL'MY_API'定义.现在看起来更好的方法是命令行切换来定义或不定义DLL的东西.但是对于静态库,"MY_API"应该是什么?
#ifdef DLL_CONFIG
#ifdef MY_EXPORTS
#define MY_API __declspec(dllexport)
#else
#define MY_API __declspec(dllimport)
#endif
#else
#define MY_API // What goes here?
#endif
class MY_API MyClass {
...
};
Run Code Online (Sandbox Code Playgroud)
现在假设可以这样做,当库的用户包含头文件时会出现问题(即他们是否必须定义'DLL_CONFIG')?
我试图找出如何使用apache commons io DirectoryWalker.理解如何子类化DirectoryWalker非常容易.但是,如何在特定目录上开始执行它?
我正在建立一个DataGridViewComboBoxColumn这样的:
var newColumn = new DataGridViewComboBoxColumn() {
Name = "abc"
};
newColumn.DataSource = new string[] { "a", "b", "c" };
dgv.Columns.Add(newColumn);
Run Code Online (Sandbox Code Playgroud)
这样做:每行在该列中都有一个下拉框,填充了a,b,c.
但是,现在我想修剪某些行的列表.我试图像这样设置每行的列表:
foreach (DataGridViewRow row in dgv.Rows) {
var cell = (DataGridViewComboBoxCell)(row.Cells["abc"]);
cell.DataSource = new string[] { "a", "c" };
}
Run Code Online (Sandbox Code Playgroud)
但是,此代码无效 - 每行仍显示"a","b","c".
我曾尝试更换new string[]同new List<string>和new BindingList<string>,都无济于事.
我也尝试删除设置的代码newColumn.DataSource,但是列表是空的.
我该如何正确地做这件事?
我有一个容器MovieClip作为我需要掩盖的内容区域.当我使用Shape在这个容器内创建一个mask时,我似乎无法与我在这里创建的其他容器的内容交互,比如按钮等.
这就是我在代码中所做的事情(我已经省略了所有的导入等):
class MyContainer extends MovieClip
{
protected var masker : Shape = null;
protected var panel : MyPanel = null;
public function MyContainer()
{
this.masker = new Shape();
this.masker.graphics.clear();
this.masker.graphics.beginFill( 0x00ff00 );
this.masker.graphics.drawRect(0, 0, 1, 1); // 1x1 pixel.
this.masker.graphics.endFill();
addChild( this.masker );
this.panel = new MyPanel(); // has buttons and stuff.
addChild( this.panel );
this.mask = this.masker;
}
// called by it's parent when the stage is resized.
public function resize( width : Number, height : Number ) …Run Code Online (Sandbox Code Playgroud) 如何在不删除项目本身的情况下删除HABTM关联项目?
例如,假设我有3名学生一起参加科学课程.如何从StudentsClasses表中删除Science对象而不删除实际的Science参考?我猜这 Student.Classes.first.delete不是一个好主意.
我使用拖放式JavaScript进行添加和删除,而不是复选框.有什么想法吗?
我正在按照本指南操作:
http://www.math.umd.edu/~dcarrera/ruby/0.3/chp_01/programs.html
我正在尝试创建我的第一个ruby程序.所以我在文本编辑器中写了它,但现在我不知道如何通过终端打开.相反,我应该在哪里将程序保存到(目录).
谢谢!
(我是新手编程的mac):(
我在Eclipse中收到此错误消息:
Access restriction: The type DirectoryWalker is not accessible
due to restriction on required library
/Library/Java/Extensions/commons-io-1.4.jar
Run Code Online (Sandbox Code Playgroud)
这是什么意思?关于同一主题还有其他SO问题,但在这种情况下似乎并不适用.我不是在创建一个新的java类,我正在尝试使用它.
我已经在这个问题上坚持了几个小时,现在运气不好.不知道这怎么可能; 我会试着总结一下.
我正在使用TinyMCE将新内容插入到数据库中,该内容在插入数据库后作为AJAX响应发回,然后显示在页面上,替换了一些旧内容.所有这些对于问题并不是真正相关(据我所知),但它可以作为问题的背景.
无论如何,响应文本在内容有换行符的地方都有'\n'.我似乎无法删除那些该死的'\n'为我的生命.我已经尝试了十几个正则表达式/替换组合而没有运气.我已经证实我并没有失去理智,并且代码通常通过尝试替换该字符串中的其他单词并且完全正常工作 - 它只是不会替换'\n'.这是我用过的一些代码试图替换'\n':
responseText = responseText.replace(/\r | \n |\r \n/g,"");
responseText = responseText.replace(Array("\ r","\n","\ f","\ r \n","\n"),"");
Niether那些对变量做任何事情.我检查了变化后立即通知它,nada.我不知道它是否会有所帮助,但这里有一个例子'\n'复制粘贴的片段,它不会消失或改变.
High School transcript</li>\n<li>SAT/ACT
Run Code Online (Sandbox Code Playgroud)
作为旁注,我已尝试通过PHP执行此操作,然后将responseText发送回具有类似替换和正则表达式的javascript,并且它也不起作用.
我有一个问题涉及调用另一个js源文件中的函数.
我使用调用该特定函数的函数在文件之前声明了源文件.我认为这会起作用,但它会给出一个未定义的错误.
我还在一个文件中有一个函数,该文件在稍后声明的源文件中调用函数.这将涉及相同的文件,但反过来.
函数在文档就绪语句(函数)之间声明.
有没有办法避免未定义的错误?
这是我如何设置它:
<script type="text/javascript" src="includes/livetabs.js"></script>
<script type="text/javascript" src="includes/chat.js"></script>
//this is in the chat.js file
$(document).ready(function(){
function chatWith(chatuser) {
check=iscookieUsername();
if (!check){
chatusersuspended=chatuser;
showchatinlogform();
}
createChatBox(chatuser);
$("#chatbox_"+chatuser+" .chatboxtextarea").focus();
}
});
//this is in the livetabs.js file
$(document).ready(function(){
function iscookieUsername(){
if (!tbusername){
return false;
}
if (issessionusername){//flag if session has already been set
return true;
}
$.ajax({
url: "includes/livetabs.php",
data: ({username: tbusername, action: "setsessionusername"}),
cache: false,
type: "POST",
dataType: "json",
success: function(data) {
//store username in php session …Run Code Online (Sandbox Code Playgroud) java ×2
javascript ×2
jquery ×2
.net ×1
actionscript ×1
associations ×1
c# ×1
c++ ×1
datagridview ×1
dynamic ×1
eclipse ×1
escaping ×1
macos ×1
mask ×1
refactoring ×1
regex ×1
ruby ×1
string ×1
terminal ×1
windows ×1