对象的方法是否应该能够访问同一类的另一个对象的受保护属性?
我在PHP编码,我刚刚发现,即使不是同一个对象,也允许通过同一个类的方法访问对象的protected属性.
在该示例中,首先,您将在输出中获得"3" - 因为函数readOtherUser将成功访问该值 - 之后将发生PHP致命错误 - 因为主程序将无法访问相同的值.
<?php
class user
{
protected $property = 3;
public function readOtherUser ()
{
$otherUser = new user ();
print $otherUser->property;
}
}
$user = new user ();
$user->readOtherUser ();
print $user->property;
?>
Run Code Online (Sandbox Code Playgroud)
这是一个PHP错误还是预期的行为(我将不得不重新学习这个概念...... :))(并且有参考这个事实)?如何在其他编程语言中完成?
谢谢!
我有一个代码非常混乱的项目 - 这里和那里有很多重复和死代码.
前一段时间单元测试的代码覆盖率为零,但现在我们尝试以TDD方式编写所有新代码,并通过单元测试覆盖"旧"代码来降低技术债务(测试最后技术).
业务逻辑的复杂性非常高,有时候没有人可以回答是否使用了某些方法.
如何找到这种死代码方法?广泛的伐木?更高的测试覆盖率?(这不是很容易,因为客户想要新的功能出来)
我想用优化-O1编译,但是有一个标志,它打开我不想使用.我该如何关闭它?
我有一个DIV,里面有很多儿童DIV.我想要的是类似于Firefox的标签,当你打开太多标签或主DIV宽度太小时,界面将检测溢出并在右侧显示一个按钮以列出所有隐藏标签.问题是我不知道从哪里开始寻求帮助.
你会用它来建立一个项目吗?(特别是C++)
它完全合法吗?
我正在用javascript/html5编写一个简单的游戏,我正在尝试实现"引力".
我的代码有点像这样:
gravity = 4;
acceleration = 1.1;
function gameLoop() {
gravity = gravity*acceleration;
if (characterPositionY < 600)
characterPositionY = characterPositionY + gravity;
setTimeout(gameLoop,1000/30);
}
Run Code Online (Sandbox Code Playgroud)
数字"600"是屏幕的底部,"地面",如果你愿意的话,玩家应该停止下降.
不幸的是,由于重力使得角色在每个循环周期中下降至少4个像素(并且增加)......角色通常会停止在地面之前或之前.像这样,例如:
[1] characterPositionY是590
- 加4
[2] characterPositionY是594
- 加4
[3] characterPositionY是598
- 加4
[4] characterPositionY是602
......过去了.
我以前从来没有真正做过任何游戏,而我只是随着时间的推移而全力以赴.可能有更好的方法来解决这个问题.
对于你们中的一些人来说,这对你来说非常简单.
但是:当我旋转一个视图时,让我们说从0度开始并向前旋转0.1,1,10,100,150,160,170,179,179,999,并继续向同一方向旋转,这就好了,说出来响亮而清晰:砰!BAAAAAAAAANNNNNGGGG !!!! -179,9999,-170,-150,-50,0,50,100,170,179,99,再次:BBBBAAAANNNGGG !!! -179,999,-170,-100,依此类推......肯定你知道我的意思;-)
想象一下,你在一条路上开车,突然你的英里 - 米 - 这样跳得很负.你会惊慌失措,对吗?
你知道吗?这对我的算法来说非常糟糕.我不知道如何解决这个问题,除了检查if-else-blocks,如果我的值突然交换掉了.有些东西告诉我,我必须看一些数学函数,如窦波和其他东西.但是我的数学知识很难达到最高程度.
我该如何解决这个问题?我尝试计算角度之间的距离,即我有两个视图,其中一个位于另一个,两个都旋转.我想计算两个视图的整体轮换.一旦价值突然从-179,99999转换到179,99999,这个小但疯狂的东西会破坏我的计算.如果你知道我的意思,我也不知道180是否存在或者如果在fabsf(179,999999999999999999999)的某处交换东西.
例如:-170度减去50度是什么?好吧,我认为-220度.但是当我旋转-170 - 50时,我最终得到这个值:40度.
我怎么能得到我期望的,-220而不是40,没有任何不安全的交换 - 如果 - 其他逻辑?有时我的自制交换器可以正常工作,但有时它不会因为数学方面的困难.
编辑:我从视图图层的transform.rotation.z属性计算角度.
我用这段代码从socket读取:
int n ;
char buffer[256];
n = read(newsockfd, buffer, 255);
if (n < 0)
{
error("ERROR reading from socket");
}
Run Code Online (Sandbox Code Playgroud)
如果必须读取的数据大于255字节(例如1000)必须发生哪些更改?
我知道改变char buffer[1000]
,我需要不同的解决方案.
我有一个接口,其方法需要一个数组Foo
:
public interface IBar {
void doStuff(Foo[] arr);
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Mockito来嘲笑这个界面,我想断言它doStuff()
被调用了,但我不想验证传递了什么参数 - "不关心".
如何使用any()
泛型方法编写以下代码,而不是anyObject()
?
IBar bar = mock(IBar.class);
...
verify(bar).doStuff((Foo[]) anyObject());
Run Code Online (Sandbox Code Playgroud) 如果解锁已解锁的互斥锁,行为是不安全,安全还是未定义?
问题的目的与下面的代码有关,我不知道在if块中解锁互斥锁是否更好,或者只是在if块之外.
// This chunk of code makes dual locking semi-autonomous.
int c_lckd = 0, q_lckd = 0;
if (pthread_mutex_trylock(&crunch_mutex) == 0) c_lckd = 1;
if (pthread_mutex_trylock(&queue_mutex) == 0) q_lckd = 1;
if (q_lckd && !c_lckd) { QUEUE_UNLOCK; q_lckd = 0; }
else if (c_lckd && !q_lckd) { CRUNCH_UNLOCK; c_lckd = 0; }
if (c_lckd && q_lckd) {
printf("cr = %d, max = %d, cnt = %d\n",
crunching, max_crunching, queue_count(conn_queue));
if (crunching < max_crunching && queue_count(conn_queue)) {
pthread_t tid = …
Run Code Online (Sandbox Code Playgroud) javascript ×2
php ×2
c ×1
class ×1
cocoa-touch ×1
connection ×1
detection ×1
gcc ×1
html ×1
instance ×1
iphone ×1
java ×1
legacy-code ×1
math ×1
mocking ×1
mockito ×1
mutex ×1
object ×1
optimization ×1
overflow ×1
refactoring ×1
rotation ×1
sockets ×1
stability ×1
unit-testing ×1
visibility ×1