gpt4 book ai didi

java - 简化Java代码

转载 作者:行者123 更新时间:2023-11-30 09:36:15 26 4
gpt4 key购买 nike

我有一个 Java 方法,它必须多次执行一段代码:

            // Obtengo los 7 bits de direccion
clockStateIndex = dataStateIndex;
for(int bit = 7; bit > 0; --bit){
clockStateIndex = clockSource.nextClearBit(clockStateIndex); // Siguiente bit en SCL
clockStateIndex = clockSource.nextSetBit(clockStateIndex);
testIndex = (clockSource.nextClearBit(clockStateIndex) - clockStateIndex)/2; // Busco la mitad del bit clock
bitSet(direccion, data.get(testIndex), bit); // Compruebo SDA en la mitad del bit SCL
}
// Obttengo el bit R/W
clockStateIndex = clockSource.nextClearBit(clockStateIndex); // Siguiente bit en SCL
clockStateIndex = clockSource.nextSetBit(clockStateIndex);
testIndex = (clockSource.nextClearBit(clockStateIndex) - clockStateIndex)/2; // Busco la mitad del bit clock
rwBit = data.get(testIndex); // Obtengo el estado del bit R/W en el medio del bit SCL

// Obtengo el bit de ACK
clockStateIndex = clockSource.nextClearBit(clockStateIndex); // Siguiente bit en SCL
clockStateIndex = clockSource.nextSetBit(clockStateIndex);
testIndex = (clockSource.nextClearBit(clockStateIndex) - clockStateIndex)/2; // Busco la mitad del bit clock
ackBit = data.get(testIndex); // Obtengo el estado del bit R/W en el medio del bit SCL

// Si tengo un ACK obtengo los 8 bits de dato
if(ackBit == false){
for(int bit = 8; bit > 0; --bit){
clockStateIndex = clockSource.nextClearBit(clockStateIndex);
clockStateIndex = clockSource.nextSetBit(clockStateIndex);
testIndex = (clockSource.nextClearBit(clockStateIndex) - clockStateIndex)/2;
bitSet(i2cData, data.get(testIndex), bit);
}
}

如代码所示:

clockStateIndex = clockSource.nextClearBit(clockStateIndex);    
clockStateIndex = clockSource.nextSetBit(clockStateIndex);
testIndex = (clockSource.nextClearBit(clockStateIndex) - clockStateIndex)/2;

重复了很多次。我无法创建#defines 来简化我的代码,比如 nextBit();替换该代码。还有其他方法可以简化它吗?如果创建一个方法,我将不得不传递两个大小约为 200 个元素的 BitSet 并返回 2 个 int 元素(我不知道在 Java 中这样做很热,因为我没有像 C 中那样的指针)

希望你能帮助我:)

最佳答案

我会把它包装在一个函数中:

// Instance based (inside classes)
{SCOPE MODIFIER} void ClockWork()
{
clockStateIndex = clockSource.nextClearBit(clockStateIndex);
clockStateIndex = clockSource.nextSetBit(clockStateIndex);
testIndex = (clockSource.nextClearBit(clockStateIndex) - clockStateIndex) / 2;
}

至于基于静态的方法,这取决于您在何处实现代码。

关于java - 简化Java代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10844017/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com